![]() |
Fiese Stringlist löscht meine Werte
Hallo,
ich hab ein vermutlich einfaches Problem, ich komm aber einfach nicht drauf. Hab einen in meinen Augen identischen(auf die List bezogen) code geschrieben, der funktioniert hat warum verlier ich meine Werte da?
Delphi-Quellcode:
type
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private public List:TStrings; Tastatur:array[1..35] of TPanel; procedure OnTasteClick(Sender:TObject); procedure TastaturErstellen; end; . . . procedure TForm1.FormCreate(Sender: TObject); var SR:TSearchRec; begin if findfirst(extractfilepath(paramstr(0))+'Conf.ini',faAnyFile,SR)<>0 then Einrichten; List:=TStringlist.Create; List.LoadFromFile(extractfilepath(Paramstr(0))+'Conf.ini'); showmessage(List[1]); <<<< Hier sind meine Werte noch da TastaturErstellen; <<< hier nichtmehr showmessage(List[1]); <<<< und hier sind sie auch nicht wieder aufgetaucht ;-) end; . . . procedure TForm1.TastaturErstellen; var i,r,s:integer; begin for i:= 0 to 35 do begin case i of 0..9: begin r:=5; s:=((i+1)*22)- 15 end; 10..19:begin r:=30; s:=(((i+1)-10)*22)- 10 end; 20..28:begin r:=55; s:=(((i+1)-20)*22)- 5 end; 29..35:begin r:=80; s:=(((i+1)-29)*22)end; end; Tastatur[i]:=TPanel.create(form1); Tastatur[i].parent:=form1; Tastatur[i].top:=r; Tastatur[i].left:=s; Tastatur[i].height:=20; Tastatur[i].width:=20; if List.strings[i]='Leer' then Tastatur[i].font.color:=clblack else Tastatur[i].font.color:=cllime; Tastatur[i].caption:=chr(w(i)); Tastatur[i].OnClick:=OnTasteClick; end; end; |
Re: Fiese Stringlist löscht meine Werte
Überprüfe doch innerhalb der for-schleife, wann der Wert verschwindet. Andernfalls ist mir das auch ein Rätsel... :gruebel:
|
Re: Fiese Stringlist löscht meine Werte
Ne is sofort weg habbich mir schon angeguckt... ja ein Rätsel ist mir das auch
|
Re: Fiese Stringlist löscht meine Werte
Delphi-Quellcode:
Tastatur:array[1..35] of TPanel;
Delphi-Quellcode:
Fällt dir etwas auf :wink: ?
for i:= 0 to 35 do
Wenn du in den Projektoptionen die Bereichsprüfung einschaltest, meldet sich Delphi mit einer hilfreichen Exception in solchen Fällen. [edit]
Delphi-Quellcode:
if findfirst(extractfilepath(paramstr(0))+'Conf.ini',faAnyFile,SR)<>0 then
![]() [/edit] |
Re: Fiese Stringlist löscht meine Werte
:wall: ohhh weia ich wette an der sch.... hätt ich noch so ewig gesessen dickes DANKESCHÖN
... ist mir nur ein Rätsel wie ich die 0 zur 1 gemacht hab, immerhin hab ich den Quelltext aus einer anderen Version die schon lief kopiert :? und dein zweiter tip stimmt auch fileexist hab ich sogar an anderer stelle im selben programm verwendet, ist spät sollte schlafen naja nochma danke |
Re: Fiese Stringlist löscht meine Werte
Ich hab den Fehler auch nicht gefunden. Meine Taktik: Die ganze Routine nochmal neu schreiben. Das hilft bei mir immer.
|
Re: Fiese Stringlist löscht meine Werte
Zitat:
|
Re: Fiese Stringlist löscht meine Werte
Ooh, ich hab schon gedebuggt, solange, dass ich irgendwann total demotiviert war. Ich hatte mal ein Problem mit ner TStringList. Code war etwa so:
Delphi-Quellcode:
Obwohl showmessage(strlst[1]); den korrekten Wert brachte, war strlst2.text konsequent immer leer.
strlst2.text:=strlst[1];
Ich hab den Fehler nicht gefunden und hab dann einfach die Routine neu geschrieben, etwas anders, und dann gings. |
Re: Fiese Stringlist löscht meine Werte
Für Extremfälle mag das nötig sein (ich habe es noch nie benötigt und ich wette, irgendwo würde ich auch bei deinem Projekt den Fehler finden), aber man kann es doch nicht als normales Mittel empfehlen :shock: . Wenn man die Methode neuschreiben würde, was vielleicht 10 Minuten in Anspruch nähme, wäre die Wahrscheinlichkeit von Fehlern im neuen Code genauso hoch wie im alten (außer dass man sich wahrscheinlich etwas mehr konzentriert hat).
Aber wenn man einmal die Optionen richtig fürs Debugging eingestellt hat (und das gehört einfach zu den wichtigsten Grundlagen), reicht (wenigstens in diesem Fall) schon ein Druck auf F9 und der Bug ist im wahrsten Sinne des Wortes erledigt. |
Re: Fiese Stringlist löscht meine Werte
Ich versuche, jetzt nicht zu OT zu werden.
Es ist halt für mich der letzte Ausweg. Neuer Code ist halt meistens deshalb besser, weil man weiß, wie mans vorher in etwa gemacht hat. Eine Routine habe ich mittlerweile 4 mal neu geschrieben (aber nur 1-2 Mal wegen eines Bugs, das andere mal wegen technischer Begrenzungen bei PHP-Dateien und neuer Features) und die Procedure funzt jetzt super. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz