In INI Datei abspeichern
Hi,
kann mir jemand zeigen wie mein Programm die einstellungen von z.B. edit1 speichern kann in einer INIT Datei. Ich hab keine Ahnung wie dat funzt! Gruss, Mindforce |
Re: In INIT Datei abspeichern
Was meinst du mit INIT ?
|
Re: In INIT Datei abspeichern
Z.B: textbla.ini
Oder [WINDOW] y: 100 x: 100 !!! |
Re: In INIT Datei abspeichern
Du meinst doch bestimmt ini-Dateien. Dann hilft dir das weiter:Delphi-Source Ini-Tutorial :bounce1:
|
Re: In INIT Datei abspeichern
INI :zwinker:
PS: schau mal in die OH ... ein Suchwort wie "ini" bringt da einiges zum Vorschein und hier im Forum bestimmt auch :) |
Re: In INIT Datei abspeichern
Hallo,
wenn du eine INI-Datei meinst, dürfte dir TIniFile oder besser TMemIniFile helfen. Für deinen Fall könnte auch [oh]T*IniFile.ReadString[/oh] / WriteString wichtig sein. Gruß, ManuMF |
Re: In INIT Datei abspeichern
|
Re: In INIT Datei abspeichern
Ja.... Danke PierreB. Aber wie deklariere ich die Tinifile.
Kann mir da jemand so ne halbe Unit schreiben, damit ich das mal schnalle. Gruss, Mindforce |
Re: In INIT Datei abspeichern
Zitat:
|
Re: In INIT Datei abspeichern
Is doch ganz simpel:
Delphi-Quellcode:
procedure TPersData.Button1Click(Sender: TObject);
var Ini: TIniFile; //Variable wird erstellt begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data/data.ini'); //Ini-Datei wird geladen ini.WriteString('PersData', 'Vorname', 'blupp'); //Daten werden geschrieben ini.Free; //Ini-Datei wird geschlossen end; |
Re: In INIT Datei abspeichern
.................................................. .................................................. .................................................. ...................................
Und wie deklariere ich TPersData? ... :lol: Ok das Dsdt Totorial zieh ich mir nocheinmal durch... moment.... /Edit : born to be alive :twisted: //Edit : SCHREI. Ok probier ich aus ///Edit: @ PierreB. Ist dein Code nun ini schreiben, ini beim laden laden, oder beides was ich bezeifel. |
Re: In INIT Datei abspeichern
TPersData war meine Beispiel-Form, nimm einfach nen Button und kopier den Code ohne die procedure-Geschichte auf dein Form.
|
Re: In INIT Datei abspeichern
Zitat:
|
Re: In INIT Datei abspeichern
Zitat:
Delphi-Quellcode:
^^
procedure TForm1.Button1Click(Sender: TObject);
var Ini: TIniFile; //Variable wird erstellt begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data/data.ini'); //Ini-Datei wird geladen try ini.WriteString('PersData', 'Vorname', 'blupp'); //Daten werden geschrieben finally ini.Free; //Ini-Datei wird geschlossen end; Gruß Philipp |
Re: In INI Datei abspeichern
Bitte. Kann mir jemand die Unit schreiben, so wie PierreB´s Beispiel :(
Gruss, Mindforce |
Re: In INI Datei abspeichern
Zitat:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, iniFiles, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ini : TiniFile; //ini variable begin ini := TiniFile.Create(ExtractFilePath(ParamStr(0))+'bin/'+'config.ini'); //ini erstellen try begin Edit1.Text := ini.ReadString('NAME', 'Hans', ''); //String wird ausgelesen und in Edit eingetragen finally ini.Free; //ini schließen end; end; procedure TForm1.FormCreate(Sender: TObject); var ini : TiniFile; //ini variable begin ini := TiniFile.Create(ExtractFilePath(ParamStr(0))+'bin/'+'config.ini'); //ini erstellen try begin ini.WriteString('[NAME]', 'Hans', 'Peter'); //String wird geschrieben finally ini.Free; //ini schließen end; end; end. |
Re: In INI Datei abspeichern
Hast du den Code überhaupt ausprobiert?
Er kann
Delphi-Quellcode:
nicht finden.
Variants
|
Re: In INI Datei abspeichern
Zitat:
Flare |
Re: In INI Datei abspeichern
Ich glaube, das solltest du selbst tun ;-)
Gruß, ManuMF P.S.: Ja, die Klammern müssen nicht rein. |
Re: In INI Datei abspeichern
Zitat:
mindforce, wieso erkennt er warscheinlich Variants nicht?? //Edit Wieso sollte ich den Code testen, wenn ich weiß das ich nichts falsch gemacht habe (außer Rechtschreib/Leichtsinnsfehler)^^ |
Re: In INI Datei abspeichern
@mindforce: Unit schreiben ? Du wirst doch wohl in der Lage sein den Quellcode aus diesem Thread in deine Button-Prozedur zu kopieren, oder ? ich weiß nicht so recht was dein Problem ist. Bist du hier "Programmierer" oder sollen wir dir deine Programme schreiben ? Vielleicht solltest du dich wirklich erstmal intensiv mit den Grundlagen beschäftigen, so wird das doch nichts...
|
Re: In INI Datei abspeichern
Dazu bin ich nicht in der Lage, weil mir keiner erklären kann wie man "function´s" und manuelle "producer´s" schreibt.
/Edit: Bin kurz davor es zu können :roll: |
Re: In INI Datei abspeichern
Dann lern es. :roll:
Delphi-Quellcode:
Jetzt ruf sie einfach auf.....
function SchreibeIni: Boolean;
var Ini: TIniFile; //Variable wird erstellt begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data/data.ini'); //Ini-Datei wird geladen ini.WriteString('PersData', 'Vorname', 'blupp'); //Daten werden geschrieben ini.Free; //Ini-Datei wird geschlossen end; |
Re: In INI Datei abspeichern
Liste der Anhänge anzeigen (Anzahl: 2)
Muss ich dann schreiben
Delphi-Quellcode:
Das funzt nicht mit meiner deklaration die ich da oben gemacht habe über functions.
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, inifiles; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; function SchreibeIni: Boolean; //Hier das so schreiben??? private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} function SchreibeIni: Boolean; var Ini: TIniFile; //Variable wird erstellt begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data/data.ini'); //Ini-Datei wird geladen ini.WriteString('PersData', 'Vorname', 'blupp'); //Daten werden geschrieben ini.Free; //Ini-Datei wird geschlossen end. Wie muss ich DAS nun machen. :wiejetzt: /Edit: Ich wusste nicht, dass das mit den Ini´s SO schwer ist. :lol: |
Re: In INI Datei abspeichern
Zitat:
Zitat:
Zurück zum Thema: Dir wurde in diversen Codestücken jetzt schon alles gesagt, was du brauchst. Zudem gibt es da ein schönes Ding namens "Onlinehilfe", die einem zu vielen Dingen so einiges erklären kann. Auch die Codevervollständigung zeigt oft einige interessante Dinge. Und zu allem Überfluss wurde dir auch ein Link zum INI-Tutorial gegeben. Dort wird doch eigentlich haarklein alles erläutert, was du brauchst. Was ist denn so schwer daran, daß jetzt eben mal umzusetzen? Wenn es wirklich die Geschichte mit dem manuellen Erstellen von Prozeduren und Funktionen ist (wobei ich wirklich nicht verstehe, was daran so schwer sein soll - bist du dir wirklich sicher, daß Programmieren das richtige für dich ist, wenn du schon sowas nicht verstehen kannst?), dann häng dich doch gottverdammt einfach mal rein und lies dir was zu dem Thema durch. Das kann doch nicht so schwer sein! :roll: Das hat mit dem Alter nun wirklich nichts zu tun. Das bringt dir hier weder Bonus noch Nachteil, wenn du dich allerdings verhältst wie ein kleines Kind, das alles von anderen gemacht bekommen möchte, dann mußt du eben nunmal mit den Folgen leben! //Edit: :roll: Und wann lernst du denn bitte mal, daß du nicht ständig solche risigen Bilder hier anhängen mußt? :roll: 1MB ist für so ein Bildchen viel zu viel. Das kann auch mit weniger als 100kb noch gut zu erkennen sein. Mach doch einfach aus deinem BMP ein JPEG, und du hast schon einiges an Größe eingespart :roll: |
Re: In INI Datei abspeichern
Eine Funktion muss nicht global deklariert werden, desweiteren hast du ein end; vergessen.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, inifiles; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} function SchreibeIni: Boolean; var Ini: TIniFile; //Variable wird erstellt begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data/data.ini'); //Ini-Datei wird geladen ini.WriteString('PersData', 'Vorname', 'blupp'); //Daten werden geschrieben ini.Free; //Ini-Datei wird geschlossen end; end. |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ist hier sicher besser aufgehoben als in \\"Programmieren allgemein\\" |
Re: In INIT Datei abspeichern
Problem mit Finally
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, inifiles, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var Ini: TIniFile; begin Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) ); try ini.WriteString('[NAME]', 'Hans', 'Peter'); //String wird geschrieben finally Ini.Free; end end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var ini : TiniFile; //ini variable begin ini := TiniFile.Create(ExtractFilePath(ParamStr(0))+'bin/'+'config.ini'); //ini erstellen try begin Edit1.Text := ini.ReadString('NAME', 'Hans', ''); //String wird ausgelesen und in Edit eingetragen finally [size=18]//HIER STECKT DAS PROBLEM[/size] ini.Free; //ini schließen end; end; end. |
Re: In INI Datei abspeichern
Delphi-Quellcode:
Was fällt dir an vorliegendem Code denn auf? :roll:
try
begin Edit1.Text := ini.ReadString('NAME', 'Hans', ''); finally ini.Free; end; Btw: Ich gehe mal davon aus, daß der Fehler lautet: "End; erwartet, aber finally gefunden", oder? Und das war jetzt ein extremer Tipp :mrgreen: |
Re: In INI Datei abspeichern
Schlau! Ja das steht da!
|
Re: In INI Datei abspeichern
Zitat:
|
Re: In INI Datei abspeichern
Also ich kann nicht verstehen wie man drei Seiten für so
eine kleine INI Geschichte braucht. Das begin nach dem try kannst du dir sparen, weil in try das sozusagen schon eingebaut ist! Jetzt sollte es funktionieren. Und wenn du dir doch ein gutes Buch kaufen willst, dann empfehler ich dir "Delphi für Kids" für 24,99€. PS.: Ich bin auch 13(:sharkylinchen:) und wurde hier nie irgendwie beleidigt, oder sonst irgend was! /EDIT: Das mit déinem Anhang ist doch wohl nicht dein ernst, oder?? |
Re: In INI Datei abspeichern
Bei der kurzen Zeit bei der du hier ja schon Angemeldet bist... na da war bei mir auch alles OK.
Wart´z mal ab das kommt nocht :| ... /Edit: ICh glaube ich lösche mein Profil. Das reicht mir! |
Re: In INI Datei abspeichern
So,
bevor ich mir das noch länger ansehen muss hier mal ein kleiner Auszug aus meiner "Form-Übersetzungs-Klasse":
Delphi-Quellcode:
Was macht der Code?
uses
TypInfo, IniFiles; var apppath: string; function MyGetWideStrProp(Instance: TObject; const PropName: String): WideString; resourcestring SUnknownProperty = 'Eigenschaft %s existiert nicht.'; var PropInfo: PPropInfo; begin PropInfo := GetPropInfo(Instance, PropName); if PropInfo = nil then begin raise EPropertyError.CreateResFmt(@SUnknownProperty, [PropName]); end; result := GetWideStrProp(Instance, PropName); end; procedure MySetWideStrProp(Instance: TObject; const PropName: String; const Value: WideString); resourcestring SUnknownProperty = 'Eigenschaft %s existiert nicht.'; var PropInfo: PPropInfo; begin PropInfo := GetPropInfo(Instance, PropName); if PropInfo = nil then begin raise EPropertyError.CreateResFmt(@SUnknownProperty, [PropName]); end; SetWideStrProp(Instance, PropInfo, Value); end; procedure WriteIni(aForm: TForm; aType: TClass; const aProperty: string = 'Text'); var CurrentCompo: TComponent; ndx: integer; EditValueIni: TIniFile; begin EditValueIni := TIniFile.Create(apppath + 'data.ini'); try for ndx := 0 to Pred(aForm.ComponentCount) do begin CurrentCompo := aForm.Components[ndx]; if (CurrentCompo is aType) then begin EditValueIni.WriteString(CurrentCompo.ClassName, CurrentCompo.Name, MyGetWideStrProp(CurrentCompo, aProperty)); end; end; finally EditValueIni.Free; end; end; procedure ReadIni(aForm: TForm; aType: TClass; const aProperty: string = 'Text'); var CurrentCompo: TComponent; ndx: integer; EditValueIni: TIniFile; newText: string; begin EditValueIni := TIniFile.Create(apppath + 'data.ini'); try for ndx := 0 to Pred(aForm.ComponentCount) do begin CurrentCompo := aForm.Components[ndx]; if (CurrentCompo is aType) then begin newText := EditValueIni.ReadString(CurrentCompo.ClassName, CurrentCompo.Name, ''); MySetWideStrProp(CurrentCompo,aProperty,newText); end; end; finally EditValueIni.Free; end; end; procedure TForm1.FormCreate(Sender: TObject); begin apppath := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0))); ReadIni(self,TEdit,'Text'); end; procedure TForm1.FormDestroy(Sender: TObject); begin WriteIni(self,TEdit,'Text'); end; Ganz einfach, er schreibt alle PropertyValues (Text oder Caption) einer TComponent der Form in eine Ini bzw. liest sie wieder. Wenn man zusätzlich noch
Delphi-Quellcode:
bzw.
ReadIni(self,TLabel,'Caption');
Delphi-Quellcode:
im Create / Destroy verwendet würden auch die Captions der Labels gespeichert und geladen werden.
WriteIni(self,TLabel,'Caption');
@mindforce: Normalerweise hätte ich das jetzt nicht gemacht. Du lernst NICHTS wenn Du einfach nur Code aus dem Forum in dein Projekt kopierst. Ich bitte Dich eindringlich darum dir die Tips welche die User dir geben auch genau zu lesen und zu verstehen versuchen. Und bitte bleibe etwas freundlicher! |
Re: In INI Datei abspeichern
Zitat:
|
Re: In INI Datei abspeichern
Zitat:
Dieses Forum ist sehr hilfsbereit und im Normalfall auch nicht unfreundlich. Aber wenn jemand herkommt und sich bedienen läßt, und dabei auch noch unfreundlich und unverschämt wird, kann man sich sehr wohl mal das Recht rausnehmen und seine Meinung sagen. Und genau das hab ich jetzt mal gemacht. Solltest du deswegen deinen Account löschen wollen, dann ist das deine Entscheidung, aber bevor du es machst, denk erstmal genau darüber nach, wie du dich verhältst. Wie man in den Wald reinruft, so kommt es zurück! Auch mit 13 kann man schon erwachsene Züge zeigen, die vermisse ich bei dir aber völlig! Lies, was man dir schreibt und versuche, damit zu arbeiten! Und wenn du ein Problem hast, dann beschreibe es ausführlich und denke vorher vielleicht auch mal drüber nach. (Die Fehlermeldung vorhin war ja wohl wirklich mehr als aussagekräftig. Hättest du dir die mal angeschaut, hättest du dir den Post auch gleich sparen können) Und wenn du Probleme mit den Grundlagen hast, dann lies doch jetzt mal endlich eines der Anfängertutorials oder kauf dir ein Buch für den Einstieg. Diese Tips scheinst du immer geflissentlich zu übergehen. //Edit: Tippfehler beseitigt |
Re: In INI Datei abspeichern
Ok Sorry.
Morgen wollte ich noch was über dieses Thema sagen. Ich will noch Fehrnsehen. Gruss, Mindforce /Edit: Heute noch mach ich ein cooles bzw. ustiges Speil. SOLANG NICHT JEMAND MEIN SPIEL BELEIDIGT! :zwinker: |
Re: In INI Datei abspeichern
Jetzt melde ich mich mal als Moderator zu Wort.
Bitte bleibt sachlich und beim Thema. Hier geht es nicht darum wie alt, jung, groß oder klein ein Mitglied der DP ist. Auch nicht wie lange er schon dabei ist oder nicht. Wenn ihr darüber diskutieren wollt/müsst macht dies bitte via PN. Ansonsten sehe ich mich leider gezwungen den Thread zu schliessen. |
Re: In INI Datei abspeichern
Hast du's nun hinbekommen oder nicht ? :gruebel:
|
Re: In INI Datei abspeichern
Das ist es ja.
Irgendwie speichert er bei FormClose" den Text nicht im Edit1. Hier mein Quellcode
Delphi-Quellcode:
Vielen Dank für deine Nachfrage PierreB.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, inifiles, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var Ini: TIniFile; begin Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) ); try ini.WriteString('[NAME]', 'Hans', 'Peter'); //String wird geschrieben finally Ini.Free; end end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var ini : TiniFile; //ini variable begin ini := TiniFile.Create(ExtractFilePath(ParamStr(0))+'bin/'+'config.ini'); //ini erstellen try begin Edit1.Text := ini.ReadString('NAME', 'Hans', ''); //String wird ausgelesen und in Edit eingetragen end; finally ini.free; end; end; end. Gruss, Euer Mindforce /Edit: Haha. :lol: Sorry ich habe die Code zusammengewürfelt. :stupid: . Sorry :oops: . Ich gucke mal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:47 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