![]() |
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 :). |
AW: TEdit speichern und lesen
Wie lautet deine Frage?
|
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: ![]() 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 |
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. |
AW: TEdit speichern und lesen
Interessanter Weise gibt es ein Tutorial das fast genauso heißt wie der Thread Titel.
![]() Da du ja sicherlich vorher mal nach ähnlichen Themen gesucht hast, solltest du dringend an deinen Suchfertigkeiten arbeiten :twisted: |
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? |
AW: TEdit speichern und lesen
nun alleine beim Dateinamen, des Beispiels "'C:Datei.txt'" kringeln sich meine Fußnägel.
Zitat:
Gruß K-H |
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.
|
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. |
AW: TEdit speichern und lesen
Zitat:
oder zum Beispiel hier: ![]() |
AW: TEdit speichern und lesen
Also ich habe es probiert baumina.
Code sieht so aus in meiner Form:
Delphi-Quellcode:
Das lesen funktioniert beim Öffnen des Programms, aber das Speichern bzw. überschreiben nicht.
// 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; |
AW: TEdit speichern und lesen
Komisch, bei mir funktioniert dein Code. Vielleicht hast du keine Schreibrechte in dem Verzeichnis?
|
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. |
AW: TEdit speichern und lesen
Ich kanns auch in einem anderen Verzeichnis probieren.
Fehlermeldung kommt keine. Was ist Delphi Code Tags? |
AW: TEdit speichern und lesen
Kann ich es irgendwie auch ohne Textdokument machen?
|
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:
|
AW: TEdit speichern und lesen
Stimmt, normalerweise müsste deine proceudre so aussehen
Delphi-Quellcode:
also Formularname Punkt FormCreate.
procedure TForm1.FormCreate(Sender: TObject);
|
AW: TEdit speichern und lesen
Das sind Delphi Tags:
Code:
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.
[DELPHI]
ShowMessage('Hallo Welt.'); [/DELPHI] Eigentlich wollte auch ich den Thread wegklicken, aber etwas ist direkt ins Auge gefallen:
Delphi-Quellcode:
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.
var
List: TStrings; begin List := TStringList.Create; |
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; |
AW: TEdit speichern und lesen
Zitat:
|
AW: TEdit speichern und lesen
Die funktionieren nicht. Wie gesagt kann am Programm liegen. Das Lesen funktioniert so ja.
|
AW: TEdit speichern und lesen
@Wikes
Was von dem was ich geschrieben habe hast du nicht verstanden? |
AW: TEdit speichern und lesen
Zitat:
|
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. |
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:
dort einbauen.
showmessage(Edit1.Text);
|
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. |
AW: TEdit speichern und lesen
Zitat:
Delphi-Quellcode:
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.
var
List: TStrings; begin List := TStringList.Create; Oder kurz gesagt, ändere das so:
Delphi-Quellcode:
var
List: TStringList; begin |
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:
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.
var
List: TStringList; begin List := TStrings.Create;
Delphi-Quellcode:
var
List: TStrings; begin List := TStrings.Create; |
AW: TEdit speichern und lesen
Zitat:
Und dabei wurde dir das hier automatisch erstellt:
Delphi-Quellcode:
???
procedure isi_FormCreate(Sender: TObject);
|
AW: TEdit speichern und lesen
Zitat:
Um an speziellen Eigenschaften/Methoden der abgeleiteten Klasse zu kommen, muss man das Objekt ggf. Casten. |
AW: TEdit speichern und lesen
Zitat:
|
AW: TEdit speichern und lesen
Zitat:
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. |
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. |
AW: TEdit speichern und lesen
Zitat:
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:
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. |
AW: TEdit speichern und lesen
Zitat:
Eine Frage, was kommt hier als Ergebnis raus?
Delphi-Quellcode:
PS: ich weiß, dass das virtual und override fehlen, trotzdem.
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; |
AW: TEdit speichern und lesen
Also ich rate mal,
42 mfg frank |
AW: TEdit speichern und lesen
Zitat:
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. |
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.
|
AW: TEdit speichern und lesen
Gibt es eine Möglichkeit es ohne Textdatei zu machen?
|
AW: TEdit speichern und lesen
Zitat:
Wieso stört dich die Textdatei? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 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