Autor Beitrag
Nicolai1605
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 21.02.04 23:36 
Der 'Latein-Manager' ist ein Programm zur Verwaltung von Vokabeln. Es ist eine Stichwortsuche auch intigriert, die man selber erweiern kann. Als Übung ist eine Abfrage der Substantive in den einzelnen Fällen vorbereitet, über die eine Statistik geführt wird. Die Substantivlisten sind alle einsehber, erweiterbar und, wie die Statistiken auch ausdruckbar.
Auch wenn ihr vielleicht nicht ganz so viel Ahnung von Letein habt, habe ich die Quelltexte mit dazu getan und bitte um Erweiterungs bzw. Verbesserung/Vereinfachungsvorschläge :!:
8)
Nicolai


Zuletzt bearbeitet von Nicolai1605 am Mi 03.03.10 01:38, insgesamt 1-mal bearbeitet
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 22.02.04 10:53 
Hallo

Zum Programm kann ich selbst nicht viel sagen, weil ich kann kein Latein  . Was mich aber am Programm nervt, ist diese sinnlose Anfangsmusik.

Zu den Quelltexten: Sorry, aber Du hast noch viel vor.

1. Als erstes springen mir jede Menge Komponenten ins Auge, die du nicht richtig bennant hast. Button10 etc. . Was haben die für eine Funktion ? ohne das ich in den Quellcode gugge, ist es nicht sofort ersichtlich, zu was die einzelnen Buttons gehören. Gib den richtige Namen wie ButtonAbfrageSubstantiv oder was weiß ich was was dir gefällt, aber irgendeinen Namen, der dir es ermöglicht auch nach einem Monat sofort Bescheid zu wissen, was der Button tun soll. Mit der Codevervollständigung sind auch lange Namen kein Problem, einfach den Anfang eingeben und STRG+Leertaste drücken und das Codevervollständigungsfenster geht auf und du kannst dort deinen Befehl/Variable/Komponente auswählen.
Das gleiche betrifft Variablen wie z1, z2 … für was sind die gut?

2. Thema Codeformatierung
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
procedure TForm1.Button11Click(Sender: TObject);
var z22,z23: integer;
unregabfrage: tstringlist;
begin
if button11.Caption = 'OK' then begin
t5 := edit1.text;
inc(mantworten);
if z2 = 5 then else
t7 := t6+t4;

if t5 = t7 then begin inc(rantworten); Label10.Caption := 'richtig'end else begin inc(fantworten); Label10.Caption := 'falsch';  
if sound = 1 then sndPlaySound(PChar('tabularium\rq.wav'),SND_ASYNC); end;
edit1.text := '';
edit1.SetFocus;
end;


z1:= random(5) + 1;
z2:= random(5) + 1;
z5:= random(2) + 1;
if z2 = 5 then
begin
unregabfrage := tstringlist.create;
case z1 of
1: t1 := 'Nominativ';
2: t1 := 'Genetiv';
3: t1 := 'Dativ';
4: t1 := 'Akkusativ';
5: t1 := 'Ablativ';
end;
case z5 of
1: t3 := 'Singular';
2: t3 := 'Plural';
end;
z3 := unregsub.Count; z4 := random(z3);
t2 := unregsub.strings[z4];
Label9.Caption := 'Der ' + t1 + ' ' + t3 + ' von ' + t2 + '!';
if t3 = 'Singular' then z22 := 0 else z22 := 5;
case z1 of
1: z22 := z22 + 1;
2: z22 := z22 + 2;
3: z22 := z22 + 3;
4: z22 := z22 + 4;
5: z22 := z22 + 5;
end;
unregabfrage.LoadFromFile('tabularium\' + t2);
z23 := z22 - 1;
t7 := unregabfrage.Strings[z23];

end
else

Du findest dich hier zurecht :shock: ? Respekt. Warum rückst du die Code nicht ein? Es hat zwar jeder seine Vorlieben, wie er was einrückt, aber es werden sich alle einig sein, das keine Einrückung großer Mist ist. Lies dir das mal durch www.delphi-source.de...undlagen/styleguide/
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.Button11Click(Sender: TObject);
var z22,z23: integer;
    unregabfrage: tstringlist;
begin
  if button11.Caption = 'OK' then
    begin
      t5 := edit1.text;
      inc(mantworten);
      if z2 = 5 then
       else
        t7 := t6+t4;

      if t5 = t7 then
        begin
          inc(rantworten); 
          Label10.Caption := 'richtig';
        end
       else
        begin
          inc(fantworten); 
          Label10.Caption := 'falsch';
          if sound = 1 then sndPlaySound(PChar('tabularium\rq.wav'),SND_ASYNC);
        end;
      edit1.text := '';
      edit1.SetFocus;
    end;
.......

Das sieht doch gleich viel übersichtlicher aus, oder?
Codeformatierung ist mit Delphi nicht wirklich ein Problem. Um nachträglich Blöcke einzurücken: textmarkieren und mit STRG+Umschalt+I gehts nach links und mit STRG+Umschalt+U nach links.

3.
ausblenden Delphi-Quelltext
1:
2:
3:
      if z2 = 5 then
       else
        t7 := t6+t4;

Was bezweckst du hier mit dem else und der leeren Anweisung? Warum schreibst du nicht gleich
ausblenden Delphi-Quelltext
1:
  If z2 <>5 then t7 := t6+t4;					


4. Die vielen Groupboxen. Freunde dich mal mit einem Pagecontol an.
Pagecontrol auf die Form, mit rechtsklick drauf und neue seiten hinzugügen. Dort packst du dann deine Komponenten drauf und kannst sowohl bei der Entwurfszeit und Laufzeit einfach zwischen den Seiten wechseln. Um deine Groupboxen da rein zu bekommen, klick eine an, Strg+X, das entsprechende Tabsheet anklicken und STRG+V, schwupps ist es drin. Um zur Laufzeit die Reiter auszublenden such mal im Forum Suche in: Delphi-Forum, Delphi-Library PAGECONTROL REITER, da gibt es einige Beiträge. Bei den Auswahlbuttons links schreibst du dann einfach pagecontrol.activepageindex := … und kannst so die Seite wechseln. Damit sparst du dir dieses vielen groupbox.visible und dein Programm wird zur Entwurfszeit auch wesentlich übersichtlicher.

5.
ausblenden Delphi-Quelltext
1:
2:
vokabellistez.LoadFromFile('tabularium/vokabellistez.txt');
vokabellistel.LoadFromFile('tabularium/vokabellistel.txt');

Das ist auch nicht richtig. Du nutzt hier den aktuellen Pfad, der kann sich aber ändern. Besser ist es, den kompletten Pfad zu übergeben. Am einfachsten mit dem Pfad der anwendung (ExtractFilePath(Application.ExeName) )
ausblenden Delphi-Quelltext
1:
vokabellistez.LoadFromFile(ExtractFilePath(Application.ExeName)+ 'tabularium/vokabellistez.txt');					

Ansonsten kannst du hier mal böse Überaschungen erleben und deine Files werden sonstowo gespeichert. Viel Spaß beim Suchen ;)

6. Bei manchen sachen wie z.B. bei den Filestreams fehlen teilweise die try-Blöcke
www.delphi-source.de/tutorials/exceptions/

7. suchen in Stringlisten:
Gugg dir mal Tstrings.indexof inder Hilfe an. Damit geht das einfacher. Indexof unterscheidet außerdem nicht zwischen groß und kleinschreibung.


So das wars erstmal, mehr fällt mir nicht ein und mehr sehe ich auch nicht, da mir dein Quelltext viel zu unübersichtlich ist und mir auch Kommentierungen fehlen, damit ich gleich weiß, wo was wie gemacht wird.

MfG Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
XeRo
Hält's aus hier
Beiträge: 6

Win XP
Delphi 7 Enterprise
BeitragVerfasst: Sa 10.04.04 13:57 
Das endprodukt kann sich ja eh sehen lassen, aber die art und weise, wie dein prog aufgebaut ist, ist etwas kompliziert und unübersichlich.

was mir nur so auf den ersten blick aufgefallen ist:

die 3 Vokabellisten würde ich in eine einzige zusammenfassen...
dein quellcode erscheint mir doch etwas übertrieben lange...hab ihn mir NOCH nicht angesehen, aber bin sicher, dass du ihn zusammenkürzen kannst...
140 Elemente...das ist doch zu viel für so ein "kleines" prog (nicht böse gemeint...)
warum verschlüsselst du start.txt und statistik.txt?
und warum haben dateien wie homo, locus und pater nicht die endung .txt?

das ist erst mal alles...wie bereits gesagt: "Das endprodukt kann sich ja eh sehen lassen." :wink:

_________________
I love AG