Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TEdit speichern und lesen (https://www.delphipraxis.net/185351-tedit-speichern-und-lesen.html)

Wikes 2. Jun 2015 14:01

TEdit speichern und lesen
 
Hallo zusammen,

ich habe ein Programm und dazu einen entsprechenden Designer. Ich habe ein tedit in meine Form eingefügt und möchte das ein Wert (z.B. aus Text Datei) beim Öffnen des Programms geladen wird. Dort muss es eine Möglichkeit geben den Wert zu ändern und nach dem Ändern soll dieser gespeichert werden bzw. den alten überschreiben (am besten automatisch wenns geht). Nach dem Schließen und wieder Öffnen des Programms soll der neue Wert erhalten bleiben.

Ich bin ein Anfänger was Delphi betrifft :).

Perlsau 2. Jun 2015 14:11

AW: TEdit speichern und lesen
 
Wie lautet deine Frage?

Headbucket 2. Jun 2015 14:22

AW: TEdit speichern und lesen
 
Willkommen hier im Forum!

Du möchtest also wenige Daten speichern und laden, richtig?

Dafür bietet sich am Anfang eine INI-Datei an. Hier findest du ein gutes Tutorial: Ini-Dateien

Beim Öffnen deines Programmes musst du den Wert aus der INI-Datei laden und beim Schließen speichern.

Wenn du dazu Fragen hast, dann kannst du sie ja gerne hier stellen.

Grüße

Wikes 2. Jun 2015 14:37

AW: TEdit speichern und lesen
 
Das Problem ist, dass ich einfache Programme lesen kann. Aber selbst eins schreiben fällt mir schwer, weil ich auch nicht alles verstehe, dazu brauch ich wenigstens ein Bsp. Ich hab auch zu dem Thema schon viel gegoogelt und auch ausprobiert, aber funktioniert hats dann doch nicht wirklich.

Kann mir jemand helfen das Programm zu schreiben? Ich brauch es für ein Auftrag.
Oder wo kann mir Hilfe holen?

Danke Headbucket, ich werde es morgen ausprobieren.

CarlAshnikov 2. Jun 2015 14:38

AW: TEdit speichern und lesen
 
Interessanter Weise gibt es ein Tutorial das fast genauso heißt wie der Thread Titel. Inhalt eines Edit-Feldes speichern

Da du ja sicherlich vorher mal nach ähnlichen Themen gesucht hast, solltest du dringend an deinen Suchfertigkeiten arbeiten :twisted:

Wikes 2. Jun 2015 14:54

AW: TEdit speichern und lesen
 
Das habe ich schon gesehen und ausprobiert. Ich weiß nicht was da noch dazu gehört an Einstellungen?
Ich konnte damit beim Öffnen des Progamms die Werte automatisch speichern und dann hab ich den Wert geändert und es hat sich nichts getan. Beim erneuten Öffnen wars wieder weg und im Textfile ist auch nichts neues drinn gewesen. Das Lesen hat auch geklappt, aber beides zusammen nicht. Ich weiß nicht genau was noch dazu gehört. Vll könnt ihr mir ja helfen?

p80286 2. Jun 2015 15:03

AW: TEdit speichern und lesen
 
nun alleine beim Dateinamen, des Beispiels "'C:Datei.txt'" kringeln sich meine Fußnägel.

Zitat:

Zitat von Wikes (Beitrag 1303911)
Das habe ich schon gesehen und ausprobiert. Ich weiß nicht was da noch dazu gehört an Einstellungen?
Ich konnte damit beim Öffnen des Progamms die Werte automatisch speichern und dann hab ich den Wert geändert und es hat sich nichts getan. Beim erneuten Öffnen wars wieder weg und im Textfile ist auch nichts neues drinn gewesen. Das Lesen hat auch geklappt, aber beides zusammen nicht. Ich weiß nicht genau was noch dazu gehört. Vll könnt ihr mir ja helfen?

Jetzt wäre der richtige Moment um uns Deinen Sourcecode zu zeigen. denn manchmal ist der Unterschied zwischen dem was man glaubt gemacht zu haben, und dem was man wirklich gemacht hat, recht groß.

Gruß
K-H

baumina 2. Jun 2015 15:04

AW: TEdit speichern und lesen
 
Der Trick ist, dass du das Lesen und das Schreiben der Textdatei an der richtigen Stelle machst. Delphi hat dafür Ereignisse. Wenn du in den Entwurfsmodus des Formulars gehst, kannst du im Objektinspektor auf Ereignisse des Formulars gehen. Dort findest du das Ereignis OnCreate. Dort Doppelklicken und in der Procedure, die dann für dich erstellt wird, schreibst du den Code fürs Lesen der Textdatei und den Inhalt der Textdatei schiebst in den Text des Editfeldes. Für das Ereignis OnDestroy machst du ebenfalls einen Doppelklick und schreibst des Code für das Speichern in die Textdatei rein.

Wikes 2. Jun 2015 15:21

AW: TEdit speichern und lesen
 
Ich kann jetzt nicht an den Rechner, erst morgen wieder.

Ich habe einfach den Code aus dem Link genommen und natürlich den Datei Name/Ort angepasst. Aber des ganze was noch dazu gehört hab ich net sauber hingekriegt. Wenns irgendwo eine Anleitung auf Deutsch für die ganzen Ereignisse usw geben würde, wärs gut.
Aber Danke ich werds morgen probieren.

BadenPower 2. Jun 2015 16:18

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1303916)
Wenns irgendwo eine Anleitung auf Deutsch für die ganzen Ereignisse usw geben würde, wärs gut.

Delphi -> F1-Taste

oder zum Beispiel hier:
http://docwiki.embarcadero.com/Libra...s.TForm_Events

Wikes 3. Jun 2015 06:16

AW: TEdit speichern und lesen
 
Also ich habe es probiert baumina.

Code sieht so aus in meiner Form:

Delphi-Quellcode:
// Form_Test.OnCreate
procedure isi_FormCreate(Sender: TObject);
var
  List: TStrings;
begin
  List := TStringList.Create;
  try
    List.LoadFromFile('C:\Projekts\Textdokument.txt');
    if List.Count>0 then
      Edit1.Text:=List[0];
  finally
    List.Free;
  end;
end;


// Form_Test.OnDestroy
procedure isi_FormDestroy(Sender: TObject);
var
  List: TStrings;
begin
  List := TStringList.Create;
  try
    List.Add(Edit1.Text);
    List.SaveToFile('C:\Projekts\Textdokument.txt');
  finally
    List.Free;
  end;
end;
Das lesen funktioniert beim Öffnen des Programms, aber das Speichern bzw. überschreiben nicht.

baumina 3. Jun 2015 06:28

AW: TEdit speichern und lesen
 
Komisch, bei mir funktioniert dein Code. Vielleicht hast du keine Schreibrechte in dem Verzeichnis?

CarlAshnikov 3. Jun 2015 06:34

AW: TEdit speichern und lesen
 
Verwende bitte in Zukunft die Delphi Code Tags (der kleine Helm im Editor) damit dein Code besser lesbar ist.

Was bedeutet es funktioniert nicht? Kommt eine Fehlermeldung?

Sind die Prozeduren auch wirklich im Objektinspektor den entsprechenden Events (Create und Destroy) zugeordnet? Eigentlich sollte das nicht funktionieren, da sie keine Objektmethoden sind.

Wikes 3. Jun 2015 06:39

AW: TEdit speichern und lesen
 
Ich kanns auch in einem anderen Verzeichnis probieren.

Fehlermeldung kommt keine.
Was ist Delphi Code Tags?

Wikes 3. Jun 2015 06:47

AW: TEdit speichern und lesen
 
Kann ich es irgendwie auch ohne Textdokument machen?

CarlAshnikov 3. Jun 2015 06:49

AW: TEdit speichern und lesen
 
Ok ich habe mich wohl missverständlich ausgedrückt:

Wenn du hier im Forum Quellcode postets, dann verwende dazu bitte die Delphi Tags ([DELPHI ] Hier kommt der Code rein[/DELPHI ] ). Ohne Leerzeichen am Ende. Diese kannst du auch bekommen indem du den kleinen Helm im Beitrag-Editor drückst.

Was ist damit:
Zitat:

Sind die Prozeduren auch wirklich im Objektinspektor den entsprechenden Events (Create und Destroy) zugeordnet?

baumina 3. Jun 2015 06:50

AW: TEdit speichern und lesen
 
Stimmt, normalerweise müsste deine proceudre so aussehen

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
also Formularname Punkt FormCreate.

Popov 3. Jun 2015 07:02

AW: TEdit speichern und lesen
 
Das sind Delphi Tags:
Code:
[DELPHI]
  ShowMessage('Hallo Welt.');
[/DELPHI]
Wenn du den Delphi Code nicht "vernünftig" postest, wird es Leute geben die sich den Code nicht mal ansehen werden. Mach es, ist für dich günstiger.

Eigentlich wollte auch ich den Thread wegklicken, aber etwas ist direkt ins Auge gefallen:
Delphi-Quellcode:
var
  List: TStrings;
begin
  List := TStringList.Create;
Das geht und es wird vermutlich keine Meldung geben, aber hier werden die Eigenschaften und Methoden von TStringList auf TStrings reduziert. Und wenn sie in TStrings anders durchgeführt werden als in TStringList, dann bekommst du das Ergebnis von TStrings.

Wikes 3. Jun 2015 07:12

AW: TEdit speichern und lesen
 
ich benutze ein anderes Programm wo Delphi verwendet wird. Deswegen der Unterschied in proceudre.

Prozeduren sind im Objektinspektor zugeordnet.

Delphi-Quellcode:
// Form_Test.OnCreate
procedure isi_FormCreate(Sender: TObject);
var
  List: TStrings;
begin
  List := TStringList.Create;
  try
    List.LoadFromFile('C:\Projekts\Textdokument.txt');
    if List.Count>0 then
      Edit1.Text:=List[0];
  finally
    List.Free;
  end;
end;


// Form_Test.OnDestroy
procedure isi_FormDestroy(Sender: TObject);
var
  List: TStrings;
begin
  List := TStringList.Create;
  try
    List.Add(Edit1.Text);
    List.SaveToFile('C:\Projekts\Textdokument.txt');
  finally
    List.Free;
  end;
end;

vagtler 3. Jun 2015 07:15

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1303970)
[...] Prozeduren sind im Objektinspektor zugeordnet. [...]

Aber nicht die hier geposteten...

Wikes 3. Jun 2015 07:20

AW: TEdit speichern und lesen
 
Die funktionieren nicht. Wie gesagt kann am Programm liegen. Das Lesen funktioniert so ja.

Popov 3. Jun 2015 07:26

AW: TEdit speichern und lesen
 
@Wikes

Was von dem was ich geschrieben habe hast du nicht verstanden?

baumina 3. Jun 2015 07:27

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1303970)
ich benutze ein anderes Programm wo Delphi verwendet wird. Deswegen der Unterschied in proceudre.

Prozeduren sind im Objektinspektor zugeordnet.

Wir wiederholen uns nicht grundlos. Die Proceduren FormCreate und FormDestroy müssen zwingend proceduren des Formulars sein.

Wikes 3. Jun 2015 07:56

AW: TEdit speichern und lesen
 
@Popov: Was ist zu tun? Ich bin wie gesagt kein Profi und verstehe deine Aussage nicht wirklich.

@baumina: Ich habe auf es so gemacht wie es gesagt wurde. Doppelklicken auf OnCreate und dann Code eingefügt in die automatisch erstellte procedure.

baumina 3. Jun 2015 08:18

AW: TEdit speichern und lesen
 
Um zu kontrollieren, ob das Programm in den FormDestroy wirklich geht und was dort in Edit1.Text drin steht, kannst du ja mal ein

Delphi-Quellcode:
showmessage(Edit1.Text);
dort einbauen.

AlexII 3. Jun 2015 08:40

AW: TEdit speichern und lesen
 
Hi,
es gab Zeiten wo ich auch so ein Anfänger war...

Aber wo hackt es jetzt genau? Lade mal dein Code hoch... keine Angst, das wird sich keiner kopieren und dein Kunde erfährt es auch nicht.

Popov 3. Jun 2015 08:58

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1303981)
@Popov: Was ist zu tun? Ich bin wie gesagt kein Profi und verstehe deine Aussage nicht wirklich.

Hier:
Delphi-Quellcode:
var
  List: TStrings;
begin
  List := TStringList.Create;
Ich hab keine Lust genau nachzugucken, aber wenn du List als TStrings (Basisklasse mit zum Teil abstrakten Methoden) deklarierst, dann hast du meiner Meinung nach auch nur ein TStrings Objekt. Dein List ist also ein TStrings und kein TStringList Objekt.

Oder kurz gesagt, ändere das so:
Delphi-Quellcode:
var
  List: TStringList;
begin

himitsu 3. Jun 2015 09:02

AW: TEdit speichern und lesen
 
Nein, in der Variable ist natürlich eine TStringList-Instanz, mit allen ihren Funktionen,
aber bei der Variable hat man (ohne einen Cast) auch nur Zugriff auf die öffentlichen Schnittstellen, welche in TStrings verfügbar sind, aber das reicht auch meistens aus.

Folgendes wäre falsch, aber das läst der Compiler eh nicht durch.
Delphi-Quellcode:
var
  List: TStringList;
begin
  List := TStrings.Create;
Das wäre "formal" richtig, aber hier bemängelt der Compiler dann natürlich zu Recht, daß die erstellte TStrings-Instanz viele abstrakte Methoden enthält.
Delphi-Quellcode:
var
  List: TStrings;
begin
  List := TStrings.Create;

Zoot 3. Jun 2015 09:03

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1303981)
Ich habe auf es so gemacht wie es gesagt wurde. Doppelklicken auf OnCreate und dann Code eingefügt in die automatisch erstellte procedure.


Und dabei wurde dir das hier automatisch erstellt:

Delphi-Quellcode:
procedure isi_FormCreate(Sender: TObject);
???

mkinzler 3. Jun 2015 09:03

AW: TEdit speichern und lesen
 
Zitat:

Ich hab keine Lust genau nachzugucken, aber wenn du List als TStrings (Basisklasse mit zum Teil abstrakten Methoden) deklarierst, dann hast du meiner Meinung nach auch nur ein TStrings Objekt. Dein List ist also ein TStrings und kein TStringList Objekt.
Doch es handelt sich um ein Objekt vom Typ TStringList.
Um an speziellen Eigenschaften/Methoden der abgeleiteten Klasse zu kommen, muss man das Objekt ggf. Casten.

mkinzler 3. Jun 2015 09:05

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Zoot (Beitrag 1303993)
Zitat:

Zitat von Wikes (Beitrag 1303981)
Ich habe auf es so gemacht wie es gesagt wurde. Doppelklicken auf OnCreate und dann Code eingefügt in die automatisch erstellte procedure.


Und dabei wurde dir das hier automatisch erstellt:

Delphi-Quellcode:
procedure isi_FormCreate(Sender: TObject);
???

Wohl eher nicht, den dann wäre es eine Methode und keine einfache Prozedure wie hier.

BadenPower 3. Jun 2015 09:10

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1303970)
ich benutze ein anderes Programm wo Delphi verwendet wird. Deswegen der Unterschied in proceudre.

Was soll das denn für ein sein?

Und wenn Du uns das Programm nicht nennst, dann können wir auch nicht auf die ausschlaggebenden scheinbar vorhandenen (oder auch nicht) Auswirkungen auf den erzeugten Code eingehen.

Wikes 3. Jun 2015 09:56

AW: TEdit speichern und lesen
 
@AlexII: Code habe ich schon hochgeladen.

@Zoot: Ja wurde automatisch erstellt.

Auch wenn ich das Programm nenne wirst du es niergends finden.

BadenPower 3. Jun 2015 10:10

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1304010)
@AlexII: Code habe ich schon hochgeladen.

Einen hochgeladenen Code hab ich nicht gefunden.

Das was Du gepostet hast, dass sind Code-Fragmente, welche mit diesen Procedure-Deklaration in Delphi für das automatische Laden und Speichern nicht funktionieren.

Zitat:

Zitat von Wikes (Beitrag 1304010)
Auch wenn ich das Programm nenne wirst du es niergends finden.

Die geposteten Proceduren mit für Delphi angepassten Deklarationen funktionieren für das Laden und Speichern.

Da wir nicht wissen können, wie "Dein Programm" weil wir es nicht kennen, es intern bewerkstelligen soll, diese Proceduren in Dein Projekt einzubinden, damit sie automatisch aufgerufen werden, können wir Dir hier so mit diesen Informationen nicht weiterhelfen.


Also entweder die gesamte Unit hier posten oder als Zip-Datei hochladen.

Popov 3. Jun 2015 11:13

AW: TEdit speichern und lesen
 
Zitat:

Zitat von himitsu (Beitrag 1303992)
Nein, in der Variable ist natürlich eine TStringList-Instanz, mit allen ihren Funktionen

Trotzdem, auch wenn es hier nicht der Grund ist, man sollte so was, zumindest wenn es nicht nötig ist, vermeiden.

Eine Frage, was kommt hier als Ergebnis raus?
Delphi-Quellcode:
type
  TTestBasis = class
    FWert: Integer;
    function GetWert: Integer;
  public
    property Wert: Integer read GetWert write FWert;
  end;

  TTest = class(TTestBasis)
    function GetWert: Integer;
  public
    property Wert: Integer read GetWert write FWert;
  end;

function TTestBasis.GetWert: Integer;
begin
  Result := FWert * 2;
end;

function TTest.GetWert: Integer;
begin
  Result := FWert div 2;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Test: TTestBasis;
begin
  Test := TTest.Create;
  try
    Test.Wert := 6;
    ShowMessage('Ergebnis: ' + IntToStr(Test.Wert));
  finally
    Test.Free;
  end;
end;
PS: ich weiß, dass das virtual und override fehlen, trotzdem.

frankyboy1974 3. Jun 2015 11:29

AW: TEdit speichern und lesen
 
Also ich rate mal,

42

mfg

frank

mkinzler 3. Jun 2015 11:34

AW: TEdit speichern und lesen
 
Zitat:

PS: ich weiß, dass das virtual und override fehlen, trotzdem.
Warum bringst Du dann das Beispiel, wenn es (wissentlich) falsch ist?
Abgesehen davon ist Dein Beispeil kein wirklichgen Grund, es gegen die allgemeine Praxis anders zu machen, weil der Fehler nicht am Typ sondern an einem (konstruierten) Designfehler liegt.

Popov 3. Jun 2015 11:53

AW: TEdit speichern und lesen
 
Weil es vorkommen kann. An einer anderen Stelle, den Thered finde ich jetzt nicht, war es der Grund für den Fehler. Weil es eben so war.

Wikes 3. Jun 2015 12:26

AW: TEdit speichern und lesen
 
Gibt es eine Möglichkeit es ohne Textdatei zu machen?

AlexII 3. Jun 2015 12:32

AW: TEdit speichern und lesen
 
Zitat:

Zitat von Wikes (Beitrag 1304033)
Gibt es eine Möglichkeit es ohne Textdatei zu machen?

Es gibt viele Möglichkeiten: INI-Datei, XML-Datei, Datenbank

Wieso stört dich die Textdatei?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 Uhr.
Seite 1 von 3  1 23      

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