Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fiese Stringlist löscht meine Werte (https://www.delphipraxis.net/59466-fiese-stringlist-loescht-meine-werte.html)

Flippo 22. Dez 2005 20:16


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;

ichbins 22. Dez 2005 20:22

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:

Flippo 22. Dez 2005 20:24

Re: Fiese Stringlist löscht meine Werte
 
Ne is sofort weg habbich mir schon angeguckt... ja ein Rätsel ist mir das auch

Khabarakh 22. Dez 2005 20:26

Re: Fiese Stringlist löscht meine Werte
 
Delphi-Quellcode:
Tastatur:array[1..35] of TPanel;
Delphi-Quellcode:
for i:= 0 to 35 do
Fällt dir etwas auf :wink: ?
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
Delphi-Referenz durchsuchenFileExists :wink:
[/edit]

Flippo 22. Dez 2005 20:31

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

3_of_8 22. Dez 2005 20:37

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.

Khabarakh 22. Dez 2005 20:56

Re: Fiese Stringlist löscht meine Werte
 
Zitat:

Zitat von 3_of_8
Ich hab den Fehler auch nicht gefunden. Meine Taktik: Die ganze Routine nochmal neu schreiben. Das hilft bei mir immer.

Das ist natürlich auch eine Möglichkeit, wenn man keine Lust zum Debuggen hat :roll: .

3_of_8 22. Dez 2005 21:29

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:
strlst2.text:=strlst[1];
Obwohl showmessage(strlst[1]); den korrekten Wert brachte, war strlst2.text konsequent immer leer.

Ich hab den Fehler nicht gefunden und hab dann einfach die Routine neu geschrieben, etwas anders, und dann gings.

Khabarakh 22. Dez 2005 21:54

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.

3_of_8 22. Dez 2005 22:01

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 13:11 Uhr.
Seite 1 von 2  1 2      

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