![]() |
speichern von daten
hey
ich habe jetzt angenommen 10 tedit komponenten, in dennen was steht beim neustart des programmes is ja alles weg! nun möchte ich ein tsavedialog hinzufügen, der mir dann die werte speichert un wenn ich das programm neustarte wieder mit topendialog wieder herstelle! hoffe das versteht jemand geht das irgendwie? ich hab es so probiert
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if SaveDialog1.Execute then begin SaveDialog1.InitialDir := ExtractFilepath(SaveDialog1.FileName); end; end; end. mfg tobi |
Re: speichern von daten
Der Dialog ist nur ein Dialog der dir das auswählen einer Datei ermöglicht. Das Speichern musst du selbst machen (mit inifiles, streams, stringlists etc.)
|
Re: speichern von daten
:wiejetzt:
ehm ich bin noch net so lang dabei :( kannst du mir irgendwie ein bsp geben? |
Re: speichern von daten
Du kannst dir eine Strinlist erstellen, in diese deine 10 Inhalte der Datei laden und dann mit einer Schleife die 10 Daten aus der Stringlist auf die TEdit's verteilen.
Delphi-Quellcode:
Solang du deinen absoluten Pfad hast, der sich auch wirklich nicht verändern wird, kannst du den teil mit "if open.execute then begin" weglassen und anstatt open.filename den absoluten Pfad eingeben in den Quelltext.
procedure TForm1.Button1Click(Sender: TObject);
var open : TOpenDialog; values: TStringlist; i : integer; begin open := TOpenDialog.Create(self); if open.execute then begin values := TStringList.Create; values.loadfromfile(open.filename); for i := 0 to values.Count -1 do memo1.lines[i] := values.Strings[i]; end; open.Destroy; values.Free; end; Desweiteren müsstest du dann nicht den Opendialog initialisieren bzw. zerstören. Ich wusst jetzt nicht, wie man das Dynamisch auch die Zählvariable i für die Edit's nehmen kann. Hab in letzter Zeit zu viel mit PHP und Javascript gearbeitet :-\ |
Re: speichern von daten
ok das war aber öffen
ich hab es als speichern unmegschrieben aber dann sagt er könnte datei nicht erstellen hmm |
Re: speichern von daten
Hier ein einfacher Save-Dialog:
Delphi-Quellcode:
procedure TForm1.SaveClick(Sender: TObject);
begin if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); end; |
Re: speichern von daten
ich verstehe nicht warum memo1.lines ?!
ich hab doch gar kein memo feld ?!? mfg tobi |
Re: speichern von daten
Es gibt auch (Fremd-)Komponenten (z.B. TFormStorage), die man aufs Formular setzt und die ganze Arbeit des Ladens und Speichern im Hintergrund durchführen.
Man kann so entweder in eine INI-Datei oder in die Registry speichern. Man kann auswählen, welche Properties von welchen Komponenten man sichern möchte. Das Formular behält so immer die Einstellungen, die es beim Programmende bzw. Freigeben des Formulars hatte. Es gibt aber nur eine Konfiguration. Wär' das was für dich ? |
Re: speichern von daten
klingt gut ich werd ma schauen ob ich es hinbekomme
thx @ all mfg tobi |
Re: speichern von daten
Zitat:
diese komponente habe ich nicht?! mfg tobi |
Re: speichern von daten
|
Re: speichern von daten
irgendwie finde ich die komponente nicht ?!?
|
Re: speichern von daten
Wenn Du die JVCL installiert hast, schau mal in der Komponentenpalette unter "Jv Persistence".
|
Re: speichern von daten
irgendwie raff ich des net zu installiern
ich hatte ma die indy komponenten installiert da ging das irgendwie einfacher. kannst du mir erklären wie das funzt? ich hab mir die "JVCL332CompleteJCL1100-Build2646" runtergeladen. mfg Tobi |
Re: speichern von daten
Entpacke das Archiv, wechsle erst in den Ordner "JCL" und führe die "install.bat" aus, anschließend dasselbe noch einmal im Ordner "JVCL".
|
Re: speichern von daten
also das jcl installiert er aber bei jvcl bringt er die fehlermeldung
[Compiling installer...] Der Befehl "..\..\packages\bin\dcc32ex.exe" ist entweder falsch geschrieben oder konnte nicht gefunden werden. Failed to compile JVCL installer was denn da los? mfg tobi |
Re: speichern von daten
Hast du ne PE?
|
Re: speichern von daten
ehm ja die 2005 pe
|
Re: speichern von daten
dann musst du die Installation manuell durchführen, da die PEs keine Kommandozeilenversion des Compilers (dcc32.exe) mitbringen.
|
Re: speichern von daten
das hab ich mir fast gedacht, bei den indy komponenten ging es einfach nur hier bei denen raf ich net wie ich se installieren soll?!
|
Re: speichern von daten
Bevor man für so etwas einfaches eine Fremdkomponente nimmt, würde ich das aber selber programmieren. Zu mal MasterTobi noch ein Anfänegr zu sein scheint und er beim Selbermachen auch mal etwas lernen würde anstatt imme rnur Komponenten aufs Formular zu klatschen und fertig ist das Programm.
Desweiteren gibt es hier schon genug Threads, wie man die JCL und die JVCL installiert. Diese Fragen gehören definitiv nicht hier in diesen Thread. |
Re: speichern von daten
Öffne die zur Delphi-Version passende Package-Gruppe in der IDE und lasse diese erstellen.
|
Re: speichern von daten
@ luckie
es hieß ma man könnte die komponente tinifile nehmen?! aber diese hab ich auch nicht. wie soll man es den selber schreiben ich raf des einfach net. |
Re: speichern von daten
TIniFiel gehört zum Standard.
hast du IniFiles in die uses aufgenommen? |
Re: speichern von daten
wenn ich
Delphi-Quellcode:
ist tinifiel oder tinifiles
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, tinifiel; rot unterstrichen |
Re: speichern von daten
Delphi-Quellcode:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, IniFiles; |
Re: speichern von daten
oh ok das funzt *g*
so un jetzt muss ich doch noch die komponente reinmachen oder, weil die hab ich nicht?! oder muss ich eine *.ini reinmachen?! |
Re: speichern von daten
Du musst eine TIniFile verwenden, das ist eine Klasse, keine Komponente.
|
Re: speichern von daten
eine "klasse" ist doch eine ganz normale unit oder?
|
Re: speichern von daten
Nein eine Klasse ist eine Klasse ( ein Typ in der OOP).
|
Re: speichern von daten
Ein Apfel ist keine Birne. Die zu verwendende Klasse heißt TIniFile, die Unit, in der sie enthalten ist, heißt IniFiles.
|
Re: speichern von daten
ich finde werder tinifile noch inifiles?!
ey ich habs heut wida xD |
Re: speichern von daten
Du hast doch IniFiles bereits eingebunden, oder hab ich den Post #27 falsch verstanden?
|
Re: speichern von daten
ja hab ich
so un nu muss ich ja dem prog irgendwie sagen mit write zum speichern un read zum lesen das er es in eine *.ini speichern soll bzw aus der wida laden soll oder, dazu brauch ich doch eine ini die an das programm gekoppelt ist oder? oder erstellt er sie dann selbst wenn ich zb auf button1 klicke? |
Re: speichern von daten
Nein, von selbst wird nichts erstellt, das musst Du selbst erledigen. Dafür kannst Du die Klasse TIniFile verwenden. Ich weiß ja nicht, welches Delphi Du benutzt, aber Du kannst ja mal in der Hilfe unter TIniFile nachsehen.
|
Re: speichern von daten
ich benutze delphi 2005 pe
ok ich werd ma schauen |
Re: speichern von daten
So ich mach es doch nicht in der ini file
ich mache es so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var zeile1, zeile2, zeile3: string; pu: Tstringlist; begin zeile1 := edit1.text; zeile2 := edit2.text; zeile3 := edit3.text; pu := Tstringlist.Create; try pu.Add(Zeile1); pu.Add(Zeile2); pu.Add(Zeile3); with savedialog1 do if execute then pu.SaveToFile(filename); finally pu.free End; end; procedure TForm1.Button2Click(Sender: TObject); var zeile1, zeile2, zeile3: string; pu: Tstringlist; begin pu := Tstringlist.Create; with opendialog1 do if execute then pu.LoadfromFile(filename); try if pu.count > 0 then Zeile1 := pu[0] else zeile1 := 'Fehlanzeige'; if pu.count > 1 then Zeile2 := pu[1] else zeile2 := 'Fehlanzeige'; if pu.count > 2 then zeile3 := pu[2] else zeile3 := 'Fehlanzeige'; edit1.text := zeile1; edit2.text := zeile2; edit3.text := zeile3; finally pu.free End; end; end. Trozdem Thx @ all MFG Tobi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 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