Autor Beitrag
p4ip
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 21.10.08 18:44 
Hallo,
ich bin delphi Neuling hätte da mal eine Frage...

Ich habe ein Memofeld, in welches Ergebnisse einer Abfrage eingetragen werde.

Die werte haben ein Datum, ein Fahrer-Kürzel und 2 Mitfahrer Kürzel. Leider wird auf Grund der Abfrage jedes Ergebnis 2-mal eingetragen, als einmal in der Form
(z.B)
Am 16.08.08 wird GRO von WIN und UBR mitgenommen.

und in irgendeiner andere Zeile kommt dann

Am 16.08.08 wird GRO von UBR und WIN mitgenommen.

Nun will ich eine Schleife haben, die diesen 2. Eintrag löscht, da es ja ein und die selbe Fahrt ist.

Mein Ansatz:
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:
53:
 for i:=0 to memo1.lines.count do begin
       dummy:=memo1.lines[i];
       dummydate:='';
       dummy:='';
       dummydate2:='';
       dummy1:='';
       dummy2:='';

       for t:=4 to 11 do begin
{***}   dummydate:=dummydate+dummy[t];      //dummydate gibt das Datum der Zeile t an
       end;

       for t:=0 to (i-1) do begin           // alle Zeilen bis zur momentanen Zeile 
        dummy1:=memo1.lines[t];             // überprüfen
        for l:=4 to 11 do begin
         dummydate2:=dummydate2+dummy1[l];  //dummydate gibt das Datum der Zeile l an  
        end;

        if dummydate=dummydate2 then begin  // Datum vergleichen
            y:=''; x:=''; y2:=''; x2:='';
            for k:=1 to 3 do begin          // Fahrernamen auslesen
            x:=x+dummy[k+25];
            y:=y+dummy[k+33];
            x2:=x2+dummy1[k+25];
            y2:=y2+dummy1[k+33];
            end;
            if ((x=y2)and (x2=y)) then begin  // überprüfen ob Fahrernamen nur vertauscht
             memo1.lines.delete(t);           // sind, falls ja: Zeile löschen
            end;
        end;
       end;
         /////////////  das Selbe in grün, allerdings von der aktuellen Zeile+1 to end
    for t:=0 to (i+1) do begin   
        dummy1:=memo1.lines[t];
        dummydate2:='';
        for l:=4 to 11 do begin
         dummydate2:=dummydate2+dummy1[l];
        end;

        if dummydate=dummydate2 then begin
 
            for k:=1 to 3 do begin
            x:=x+dummy[k+25];
            y:=y+dummy[k+33];
            x2:=x2+dummy1[k+25];
            y2:=y2+dummy1[k+33];
            end;
            if ((x=y2)and (x2=y)) then begin
             memo1.lines.delete(t);
            end;
        end;
       end;
     end;



bei den {***} kriege ich beim ausführen den Fehler:
... exception der Klasse EAccessViolation aufgetreten ...

woran kann das liegen?
Vielen Dank schonmal für jedwige Antwort ;)[delphi]
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 21.10.08 20:04 
Hallo und :welcome: in der Entwickler-Ecke

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
for i:=0 to memo1.lines.count - 1 do // Fehler Nr. 1 
begin 
       dummy:=memo1.lines[i]; 
       dummydate:=''; 
       dummy:=''; 
       dummydate2:=''; 
       dummy1:=''; 

       dummy2:=''; 


       for t:=4 to 11 do begin 
         dummydate:=dummydate+dummy[t];  // Nr.2: dummy[4] existiert gar nicht
       end;

_________________
We are, we were and will not be.