Bitte schaut euch den Code an ich find den Fehler nicht.
Am Anfang habe ich eine Anzahl von 114 Zeilen.
Nach dem löschen nur noch 109 aber in meiner for Schleife
for x:=2 to Anzahl schießt x darüber hinaus. Obwohl Anzahl in der for schleife upgedatet wird.
Wird der Wert (Anzahl) nicht mehr überprüft wenn man schon in der for schleife ist??
Wenn ich mit einer Repeat schleife arbeiten würde das dann funken
Delphi-Quellcode:
function TOmds.OmdsCount():integer; //Anzahl Datensätze
begin
result:= MeineString_List.Count -1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var x :integer;
begin
if MOmds.LadeOmds('C:\Programme\Borland\Delphi7\Projects\OMDS1.1\M1035390_20040407_023824_01.TXT')=true then
begin
Anzahl:= MOmds.OmdsCount;
for x:=2 to Anzahl do
begin
Anzahl:= MOmds.OmdsCount;
if MOmds.IstPerson(x)= true then //Person
begin
Stringgrid1.RowCount:= Stringgrid1.RowCount+1;
StringGrid1.Cells[0,x-2]:= MOmds.GetAnrede(x);
StringGrid1.Cells[1,x-2]:= MOmds.GetTitel(x);
StringGrid1.Cells[2,x-2]:= MOmds.GetFamName(x);
end; //Ende Person
if MOmds.IstAuto(x)= true then
begin
Stringgrid1.RowCount:= Stringgrid1.RowCount+1;
StringGrid1.Cells[0,x-1]:= MOmds.GetAutoArt(x);
StringGrid1.Cells[1,x-1]:= Momds.GetAutoMarke(x);
StringGrid1.Cells[2,x-1]:= MOmds.GetAutoTyp(x);
end; //Ende ist Auto
if MOmds.IstSchaden(x)=true then
begin
end;
end; //Ende gehe omds count durch
end; //ende Omds geladen
end;
function TOmds.GetAutoPolNr(x:Integer):String; //Auto PolNr
begin
if Doppelter_Eintrag(x,13,25)=false then //Doppelte im OMDS herausfiltern
result:=trim(copy(MeineString_List.Strings[x],13,25))
else
begin
MeineString_List.Delete(x+1); //Wenn doppelter nur in nächster Zeile möglich
end;
end;
function TOmds.Doppelter_Eintrag(x,pos,anz:Integer):boolean; //Doppelter Eintrag??
var temp: string;
begin
temp:= trim(copy(MeineString_List[x],pos,anz));
if temp = trim(copy(MeineString_List[x+1],pos,anz)) then
result:= true
else
result:=false;
end;