AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

alles deaktivieren (neuse Problem)

Ein Thema von Wadim · begonnen am 28. Okt 2003 · letzter Beitrag vom 30. Okt 2003
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#21

Re: alles deaktivieren (neuse Problem)

  Alt 28. Okt 2003, 17:32
Du musst ganz sicher gehen, dass der Code, der vorher etwas in die Datei schreibt, auch ausgeführt wird...bist du da sicher?
  Mit Zitat antworten Zitat
Wadim

Registriert seit: 31. Aug 2003
185 Beiträge
 
#22

Re: alles deaktivieren (neuse Problem)

  Alt 28. Okt 2003, 17:36
Zitat von Stanlay Hanks:
Du musst ganz sicher gehen, dass der Code, der vorher etwas in die Datei schreibt, auch ausgeführt wird...bist du da sicher?
ja eigentlich schon- hier ist der ganze code:

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 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.
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#23

Re: alles deaktivieren (neuse Problem)

  Alt 28. Okt 2003, 17:45
Moin Wadim,

gewöhnst Du Dir bitte mal an die Delphi-Tags zu setzen, wenn Du Codeabschnitte postest.
Danke.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Wadim

Registriert seit: 31. Aug 2003
185 Beiträge
 
#24

Re: alles deaktivieren (neuse Problem)

  Alt 28. Okt 2003, 17:46
Zitat von Christian Seehase:
Moin Wadim,

gewöhnst Du Dir bitte mal an die Delphi-Tags zu setzen, wenn Du Codeabschnitte postest.
Danke.
ich weiß nicht wie das geht

sorry kannst zeigen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#25

Re: alles deaktivieren (neuse Problem)

  Alt 28. Okt 2003, 17:52
Moin Wadim,

dazu hast Du drei Möglichkeiten:
  1. Wenn Du eine Antwort schreibst steht oben unter Stile ein Button "Delphi-Code". Den gewüschten Abschnitt markieren, Button anklicken, fertig.
  2. Vor den Codeabschnitt gehen, Button anklicken, das Starttag wird gesetzt und der Button bekommt ein * als Kennung, das beim nächsten anklicken ein Endtag eingefügt wird. An das Ende des Codeabschnittes gehen, Button anklicken, das Endtag wird eingefügt.
  3. Du schreibst vor den Abschnitt ein [delphi*] und an das Ende ein [/delphi*] (jeweils ohne den * ).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Wadim

Registriert seit: 31. Aug 2003
185 Beiträge
 
#26

Re: alles deaktivieren (neuse Problem)

  Alt 28. Okt 2003, 17:55
also so ne danke- kommt nicht wieder vor
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#27

Re: alles deaktivieren (neuse Problem)

  Alt 28. Okt 2003, 18:29
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 von Wadim:
Delphi-Quellcode:
unit Unit1;
....
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;
......
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#28

Re: alles deaktivieren (neuse Problem)

  Alt 29. Okt 2003, 08:59
War schon klar, das nichts gespeichert wurde.
Delphi-Quellcode:
List.SaveToFile('test');
For a := 1 to 3 do
  List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text);
List wurde erst in der Datei gespeichert und dann mit Daten gefüllt.


Ausserdem hast du List entweder überhaupt nicht erstellt oder so oft wie du auf Button1 und/oder Button2 gedrückt hast.List := TStringList.Create; Und am Ende, ohne Abfrage ob es existiert, 1-mal freigegeben.List.Free; Und dann noch ein kleiner Fehler beim einlesen.
Wenn man diesen Code mal etwas optimiert, sieht man das immer nur der 3. List-Eintrag den Editfeldern zugewiesen wird.
Delphi-Quellcode:
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];
Hab das unten mit abgeändert.
Delphi-Quellcode:
For a := 1 to 3 do {  v  }
  (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1];
Hier hatte sich auch die Fehlermeldung "maximum (0)" versteckt. (List war leer und Index 0 bis 2 wurde eingelesen)



So müsste es geh'n:
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 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.
-List wird beim erstellen der Formulars erzeugt und beim löschen des Forms wieder freigegeben.
-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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Wadim

Registriert seit: 31. Aug 2003
185 Beiträge
 
#29

Re: alles deaktivieren (neuse Problem)

  Alt 30. Okt 2003, 17:06
Zitat von himitsu:
War schon klar, das nichts gespeichert wurde.
Delphi-Quellcode:
List.SaveToFile('test');
For a := 1 to 3 do
  List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text);
List wurde erst in der Datei gespeichert und dann mit Daten gefüllt.


Ausserdem hast du List entweder überhaupt nicht erstellt oder so oft wie du auf Button1 und/oder Button2 gedrückt hast.List := TStringList.Create; Und am Ende, ohne Abfrage ob es existiert, 1-mal freigegeben.List.Free; Und dann noch ein kleiner Fehler beim einlesen.
Wenn man diesen Code mal etwas optimiert, sieht man das immer nur der 3. List-Eintrag den Editfeldern zugewiesen wird.
Delphi-Quellcode:
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];
Hab das unten mit abgeändert.
Delphi-Quellcode:
For a := 1 to 3 do {  v  }
  (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1];
Hier hatte sich auch die Fehlermeldung "maximum (0)" versteckt. (List war leer und Index 0 bis 2 wurde eingelesen)



So müsste es geh'n:
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 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.
-List wird beim erstellen der Formulars erzeugt und beim löschen des Forms wieder freigegeben.
-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.
hmmm- hast es bei dir ausprobiert? - bei mir klapt auch dein quellcode nicht???
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#30

Re: alles deaktivieren (neuse Problem)

  Alt 30. Okt 2003, 17:23
Nein.

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
Angehängte Dateien
Dateityp: exe edits_speichern_lesen.exe (62,1 KB, 2x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 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