![]() |
Re: alles deaktivieren (neuse Problem)
Du musst ganz sicher gehen, dass der Code, der vorher etwas in die Datei schreibt, auch ausgeführt wird...bist du da sicher?
|
Re: alles deaktivieren (neuse Problem)
Zitat:
Delphi-Quellcode:
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; list : tstringlist; implementation {$R *.dfm} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin list.free; end; procedure TForm1.Button1Click(Sender: TObject); var a : integer; begin list := tstringlist.Create; list.SaveToFile ('test'); for a := 1 to 3 do list.add ((findcomponent ('edit' + inttostr (a)) as tedit).text); end; procedure TForm1.Button2Click(Sender: TObject); var a,b : integer; begin list := tstringlist.create; list.loadfromfile ('test'); for a := 1 to 3 do for b := 0 to 2 do (findcomponent ('edit' + inttostr (a)) as tedit).Text := list.Strings [b]; end; end. |
Re: alles deaktivieren (neuse Problem)
Moin Wadim,
gewöhnst Du Dir bitte mal an die Delphi-Tags zu setzen, wenn Du Codeabschnitte postest. Danke. |
Re: alles deaktivieren (neuse Problem)
Zitat:
sorry kannst zeigen |
Re: alles deaktivieren (neuse Problem)
Moin Wadim,
dazu hast Du drei Möglichkeiten:
|
Re: alles deaktivieren (neuse Problem)
Delphi-Quellcode:
danke- kommt nicht wieder vor
also so ne
|
Re: alles deaktivieren (neuse Problem)
Hai Wadim,
der Code von dir ist nicht ohne Gefahr. du gibst im OnClose Ereigniss IMMER dein Objekt list frei. Ohne das es erstellt sein muss. Wenn keiner auf Button1 oder Button2 geklickt hat wurde es ja nicht erzeugt. Zitat:
|
Re: alles deaktivieren (neuse Problem)
War schon klar, das nichts gespeichert wurde.
Delphi-Quellcode:
List wurde erst in der Datei gespeichert und dann mit Daten gefüllt.
List.SaveToFile('test');
For a := 1 to 3 do List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text); Ausserdem hast du List entweder überhaupt nicht erstellt oder so oft wie du auf Button1 und/oder Button2 gedrückt hast.
Delphi-Quellcode:
Und am Ende, ohne Abfrage ob es existiert, 1-mal freigegeben.
List := TStringList.Create;
Delphi-Quellcode:
Und dann noch ein kleiner Fehler beim einlesen.
List.Free;
Wenn man diesen Code mal etwas optimiert, sieht man das immer nur der 3. List-Eintrag den Editfeldern zugewiesen wird.
Delphi-Quellcode:
Hab das unten mit abgeändert.
For a := 1 to 3 do
For b := 0 to 2 do (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[b]; For a := 1 to 3 do {v} (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[2];
Delphi-Quellcode:
Hier hatte sich auch die Fehlermeldung "maximum (0)" versteckt. (List war leer und Index 0 bis 2 wurde eingelesen)
For a := 1 to 3 do { v }
(FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1]; So müsste es geh'n:
Delphi-Quellcode:
-List wird beim erstellen der Formulars erzeugt und beim löschen des Forms wieder freigegeben.
Unit Unit1;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm1 = Class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Procedure FormCreate(Sender: TObject); Procedure FormDestroy(Sender: TObject); Procedure Button1Click(Sender: TObject); Procedure Button2Click(Sender: TObject); End; Var Form1: TForm1; List: TStringList; Implementation {$R *.dfm} Procedure TForm1.TForm1.FormCreate(Sender: TObject); Begin List := TStringList.Create; End; Procedure TForm1.FormDestroy(Sender: TObject); Begin List.Free; End; Procedure TForm1.Button1Click(Sender: TObject); Var a: Integer; Begin List.Clear; For a := 1 to 3 do List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text); List.SaveToFile ('test'); End; Procedure TForm1.Button2Click(Sender: TObject); Var a: Integer; Begin List.LoadFromFile('test'); For a := 1 to 3 do (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1]; End; End. -Da List global definiert ist und daher schon etwas enthalten kann, sollte dessen Inhalt vorm einlesen löschen. (List.Clear;) Da List aber immer nur Lokal verwendet wird, kann man es auch Lokal definieren:
Delphi-Quellcode:
Unit Unit1;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm1 = Class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Procedure Button1Click(Sender: TObject); Procedure Button2Click(Sender: TObject); End; Var Form1: TForm1; Implementation {$R *.dfm} Procedure TForm1.Button1Click(Sender: TObject); Var List: TStringList; a: Integer; Begin List := TStringList.Create; For a := 1 to 3 do List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text); List.SaveToFile ('test'); List.Free; End; Procedure TForm1.Button2Click(Sender: TObject); Var List: TStringList; a: Integer; Begin List := TStringList.Create; List.LoadFromFile('test'); For a := 1 to 3 do (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1]; List.Free; End; End. |
Re: alles deaktivieren (neuse Problem)
Zitat:
|
Re: alles deaktivieren (neuse Problem)
Liste der Anhänge anzeigen (Anzahl: 1)
Nein. :oops:
Das Einzige, was man aber nicht direkt als Fehler ansehen kann, war eine doppelte Eingabe. (Ist aber erkennbar was da los ist.) Procedure TForm1.TForm1.FormCreate(Sender: TObject); gelöscht, getestet und es geht :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 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