Hallo,
ich habe bei meiner Anwendung folgendes Problem:
Mithilfe einer Stringlist werden Uhrzeiten mit Informationen eingelesen.
Wenn die eingegebene Uhrzeit erreicht wurde, soll der Eintrag gelöscht werden. Allerdings werden Einträge gelöscht, die noch gar nicht erreicht wurden.
Die Codes:
Daten speichern bzw. ausgeben:
Delphi-Quellcode:
procedure PrintOutAuto;
var
Zeit: String;
Info: String;
StringRoh: String;
Zeilen: Integer;
begin
Zeilen:=slA.Count; //Füllen der Zeilen
ShowMessage(IntTOStr(Zeilen));
if slA.Text <> '' then
if Zeilen >= 1 then
//if Length(slA[0]) >= 1 then
begin
ShowMessage('Z1,slA[0]');
StringRoh:=slA[0];
Zeit:=(Copy(StringRoh,1,5));
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Form1.Show1.Caption:=(Zeit + ' - ' + Info);
end
else
begin
Form1.Show1.Visible:=false;
Form1.Show2.Visible:=false;
Form1.Show3.Visible:=false;
Form1.Show4.Visible:=false;
Form1.Show5.Visible:=false;
end;
if Zeilen >= 2 then
//if Length(slA[1]) >= 1 then
begin
ShowMessage('Z2,slA[1]');
StringRoh:=slA[1];
Zeit:=(Copy(StringRoh,1,5));
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Form1.Show2.Caption:=(Zeit + ' - ' + Info);
end
else
begin
Form1.Show2.Visible:=false;
Form1.Show3.Visible:=false;
Form1.Show4.Visible:=false;
Form1.Show5.Visible:=false;
end;
if Zeilen >= 3 then
//if Length(slA[2]) >= 1 then
begin
ShowMessage('Z3,slA[2]');
StringRoh:=slA[2];
Zeit:=(Copy(StringRoh,1,5));
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Form1.Show3.Caption:=(Zeit + ' - ' + Info);
end
else
begin
Form1.Show3.Visible:=false;
Form1.Show4.Visible:=false;
Form1.Show5.Visible:=false;
end;
if Zeilen >= 4 then
//if Length(slA[3]) >= 1 then
begin
ShowMessage('Z4,slA[3]');
StringRoh:=slA[3];
Zeit:=(Copy(StringRoh,1,5));
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Form1.Show4.Caption:=(Zeit + ' - ' + Info);
end
else
begin
Form1.Show4.Visible:=false;
Form1.Show5.Visible:=false;
end;
if Zeilen >= 5 then
//if Length(slA[4]) >= 1 then
begin
ShowMessage('Z5,slA[4]');
StringRoh:=slA[4];
Zeit:=(Copy(StringRoh,1,5));
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Form1.Show5.Caption:=(Zeit + ' - ' + Info);
end
else
begin
Form1.Show5.Visible:=false;
end;
{für die ersten 5: zeit + info ausgeben}
if Form1.Show1.Visible=false then //Abfangen, falls ShowLabel nicht sichtbar ist
begin
if slA.Count >= 1 then //Nur aktivieren, wenn wirklich benötigt
begin
Form1.Show1.Visible:=true;
end;
end;
if Form1.Show2.Visible=false then
begin
if slA.Count >= 2 then
begin
Form1.Show2.Visible:=true;
end;
end;
if Form1.Show3.Visible=false then
begin
if slA.Count >= 3 then
begin
Form1.Show3.Visible:=true;
end;
end;
if Form1.Show4.Visible=false then
begin
if slA.Count >= 4 then
begin
Form1.Show4.Visible:=true;
end;
end;
if Form1.Show5.Visible=false then
begin
if slA.Count >= 5 then
begin
Form1.Show5.Visible:=true;
end;
end;
end;
Nach Ablauf checken:
Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
var
Zeilen: Integer;
Zeile: Integer=0;
StringRoh: String;
Zeit: TTime;
Info: String;
fs: TFileStream;
LB: String;
begin
Zeilen:=slA.Count;
while Zeilen > 0 do
begin //-> PrintOutAuto
StringRoh:=slA[Zeile];
Zeit:=StrToTime(Copy(StringRoh,1,5));
Info:=StringRoh;
Delete(Info,1,6);
//ShowMessage(TimeToStr(Zeit));
//ShowMessage(Info);
If Now > Zeit then {Hier liegt wohl das Problem}
begin
slA.Delete(Zeile);
slA.Text:=Trim(slA.Text);
//slA.SaveToFile('slA.log');
Zeilen:=slA.Count;
PrintOutAuto;
end;
Zeile:=Zeile+1;
Zeilen:=slA.Count-1;
end;
end;
Ich hoffe Ihr steigt da durch.