Archiv verlassen und diese Seite im Standarddesign anzeigen : [DELPHI 6]Daten speichern und auslesen
Heho,
ich will die daten eines "Formulars dauerhaft auf der Festplatte speichern.
also mal als beispiel
name: max
nachname: Mustermann
adresse: Mussterstraße 99
plz: 12345
ort: musterhausen
nun sind alle diese Formularfelder einzelne Variablen. die soll auch so bleiben. also ich will es so speichern, das ich selbige auch wieder als einzelne Variablen auslesen kann. Wie realisiere ich dies am günstigsten?
noch ein weiteres Problem. ich will nun verschiedene Funktionen des Programmes in frames realisieren. kann ich diese nun in einer Form mit einem Frame-teil da be buttonclicks aufrufen? und innerhalb dieser frames sollen dann auch die daten sein, welche gespeicher/geöffnet werden sollen. wo muss dann der speichern/öffnen dialog hin? in des frame oder in die form?
mfg Borky
NPC Fighter
07.01.2007, 16:48
Du könntest mit Ini Dateien arbeiten. Ein Tutorial dazu gibts hier (http://www.dsdt.info/tutorials/ini/).
ok, ich versuchs mal so. aber ich denke,das das klappen müsste. nun hab ich aber erst mal das wichtigere Problem. Ich will das beim start innerhalb der form aufgerufene Frame "ändern" sprich dort ein anderes Frame einbinden, samt des Codes dieses anderen Frames. wie realisiere ich das? bzw unter welche funktion muss ich da suchen
Borky
EDIT: ok, das mit der INI-Datei funktioniert einwandfrei. nun hab ich aber ein anderes Problem. ich hab die ini-datei abspeichern lassen.
ich öffne diese nun wieder über einen opendialog. funktioniert auch einwandfrei. wenn ich nun aber das probgram beende oder den frame, in dem die daten angezeigt werden, schließe. bekomme ich eine fehlermeldung.
diesen fehler bekomm ich wenn ich den frame mit destroy schließe:
http://upload.npcfighter.de/files/36/448fehler1.jpg
und diesen, wenn ich das programm mit dem geöffneten frame beende:
http://upload.npcfighter.de/files/36/973fehler2.jpg
wenn ich jedoch erst den fram schließe (und nach ok klicken des fehlers) läuft das prog problemlos weiter und ich kann es auch ohne fehlermeldung normal beenden
hier noch der code, mit dem ich die datei öffne und auslese:
procedure Tform_main.dat_lieg_openClick(Sender: TObject);
begin
frm_lieg_open := Tfrm_lieg_open.Create( nil );
frm_lieg_open.Parent := frm_main;
frame := 3;
frm_lieg_open.open_lgs.Create(self);
frm_lieg_open.open_lgs.InitialDir := 'liegenschaften/';
frm_lieg_open.open_lgs.Options := [ofFileMustExist];
frm_lieg_open.open_lgs.Filter := 'Liegenschaften|*.lgs';
frm_lieg_open.open_lgs.FilterIndex := 1;
frm_lieg_open.open_lgs.Execute;
ini := TIniFile.Create(frm_lieg_open.open_lgs.FileName);
frm_lieg_open.open_lgs.Destroy;
frm_lieg_open.lbl_liegenr_anz.Caption := ini.ReadString('Liegenschaft','Liegenschaftsnummer','');
frm_lieg_open.lbl_verm_anz.Caption := ini.ReadString('Liegenschaft','Vermieter','');
frm_lieg_open.lbl_adr_anz.Caption := ini.ReadString('Liegenschaft','Straße','');
frm_lieg_open.lbl_plz_anz.Caption := ini.ReadString('Liegenschaft','PLZ','');
frm_lieg_open.lbl_ort_anz.Caption := ini.ReadString('Liegenschaft','Ort','');
ini.Free;
dat_lieg_close.Enabled := True;
end;
der fehler kommt gleichermassen, wenn ich den dialog mit
frm_lieg_open.open_lgs.Destroy;
bzw.
frm_lieg_open.open_lgs.Free;
freigebe
mfg Borky
Caine Luveno
10.01.2007, 19:02
Wieso erstellst du den Frame eigentlich zur Laufzeit?
Ansonsten:
frm_lieg_open.open_lgs.Create(self);
wird freigegeben aber
frm_lieg_open
wird nicht wieder freigegeben. Vielleicht liegts daran.
Wieso erstellst du den Frame eigentlich zur Laufzeit?
Ansonsten:
frm_lieg_open.open_lgs.Create(self);
wird freigegeben aber
frm_lieg_open
wird nicht wieder freigegeben. Vielleicht liegts daran.
der fehler selbst is schon behoben. und die frm_lieg_open wird in einer andern prozedur wieder freigegeben. des is ja nur ein schnipssel ausm quellcode. und warum ich frames zur laufzeit erstelle? weil ich mehrere Frames innerhalb einer form abwechselnd haben will.
aber noch etwas. kann man Code global auslagern und dann sozusagen includen. ähnlich wie in php oder C/C++ der include-befehl?
Borky
MagicMagor
11.01.2007, 13:04
aber noch etwas. kann man Code global auslagern und dann sozusagen includen. ähnlich wie in php oder C/C++ der include-befehl?
Ja, oben zu Beginn deiner Datei wirst du den Punkt "uses" sehen. Hinter den schreibst du die Dateinamen (ohne die Endung), die du verwenden willst.
Also wenn du eine Datei "zeugs.pas" hast schreibst du
uses zeugs;
Delphi hat da schon einige Dateien eingefügt die du bereits benutzt (zB Forms), deine Dateien kannst du einfach dahinter anfügen.
Es ist noch zu erwähnen, es gibt zwei uses in jeder Datei. Einmal ganz oben im Interface-Teil, wo man Klassen definiert und einmal im Implementation-Teil wo der eigentliche Code der Funktionen steht.
Wenn du Funktionen oder Variablen/Konstanten aus anderen Dateien in deinem Interface-Teil nutzen willst musst du die Datei auch dort einfügen. (Sie ist dann aber in der gesamten Datei verfügbar) Dateien die nur im Implementation-Teil eingefügt wurden sind auch nur dort benutzbar.
Der wichtige Unterschied ist, im Interface-Teil darfst du keine Ring-Einfügung machen. Also wenn Datei A in ihrem Interface-Teil Datei B einfügt, darf Datei B nicht Datei A in seinem Interface-Teil einfügen, Delphi würde dir dann einen Fehler entgegenwerfen.
Im Implementation-Teil dürfen solche Ring-Einfügungen aber vorkommen.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.