Thema: Delphi Problem bei TStringList

Einzelnen Beitrag anzeigen

muffin104k6
(Gast)

n/a Beiträge
 
#1

Problem bei TStringList

  Alt 11. Jun 2014, 19:23
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.
  Mit Zitat antworten Zitat