Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi warum mach showmessage probleme? (https://www.delphipraxis.net/37554-warum-mach-showmessage-probleme.html)

glkgereon 7. Jan 2005 09:53


warum mach showmessage probleme?
 
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var t:TStringDynArray;
    i:integer;
begin
  for i:=Lst_todo.Count-1 downto 0 do
    begin
    t:=Explode(' - ',Lst_todo.Items[i]);
    if time-StrToTime(t[0])>0 then
      begin
      if t[2]=Sound then Snd else
      if t[2]=Messag then Msg(t[1]) else
      if t[2]=Msg_Sound then Snd_Msg(t[1]);
      Lst_done.Items.Add(Lst_todo.Items[i]);
      Lst_todo.Items.Delete(i);
      end;
    end;
end;
Sound, Messag und Msg_Sound sind konstante
Snd, Msg und Snd_Msg sind procedures

die zerlegung per explode funzt wies sie soll, aber bei 2 oder mehr einträgen die abgearbeitet werden müssen kommt ne meldung, wie wenn man versucht auf Lst_done.Items[2] zuzugreifen obwohl die nur 1 eintrag hat....
vorher wird die showmessage(die wird in Msg aufgerufen) aber auch zu oft gemacht, also bei 2 sachen kommt die min. 3 mal....

woran liet das?

IngoD7 7. Jan 2005 10:58

Re: warum mach showmessage probleme?
 
Zitat:

Zitat von glkgereon
woran liet das?

Woher soll man das wissen? Außer dir weiß niemand, welchen Weg die Programmausführung nimmt. Teste es halt alles ordentlich aus.

Beispiel:
Zitat:

Zitat von glkgereon
wie wenn man versucht auf Lst_done.Items[2] zuzugreifen obwohl die nur 1 eintrag hat....

Ganz sicher? Wann immer das "if time-StrToTime(t[0])>0 then" ausgeführt wird, hängst du doch selber einen Eintrag an die Liste dran.
Delphi-Quellcode:
if time-StrToTime(t[0])>0 then
      begin
      if t[2]=Sound then Snd else
      if t[2]=Messag then Msg(t[1]) else
      if t[2]=Msg_Sound then Snd_Msg(t[1]);
      Lst_done.Items.Add(Lst_todo.Items[i]); //<--- hier!
      Lst_todo.Items.Delete(i);
      end;
Wie oft trifft denn die if-Bedingung zu? Dann weißt du auch, wieviele Einträge die Lst_done mindestens hat.

glkgereon 7. Jan 2005 11:04

Re: warum mach showmessage probleme?
 
nein, bei der lst_todo kam der fehler...

aber es funzt auf einmal, dabei hab ich eigentlich gar nix geändert :gruebel: :gruebel:

IngoD7 7. Jan 2005 11:22

Re: warum mach showmessage probleme?
 
Zitat:

Zitat von glkgereon
nein, bei der lst_todo kam der fehler...

Dann wäre es natürlich schön (wenn auch im Nachhinein unwichtig) gewesen, wenn das da gestanden hätte. :?

Zitat:

Zitat von glkgereon
aber es funzt auf einmal, dabei hab ich eigentlich gar nix geändert :gruebel: :gruebel:

Vielleicht hast du ja Glück und der Fehler kommt wieder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz