Entwickler-Ecke
Dateizugriff - INI- Datei lesen und schreiben
chris_davidi - Mo 25.08.03 10:42
Titel: INI- Datei lesen und schreiben
Hallo.
Ich weiß, wir hatten es schon oft, aber ich suche es in vereinfachter Form und dies könnte man dann hier in die FAQ stellen. Wäre gut. :D
Meine Frage.
Ich habe 5 Edit- Felder und ein Button "Speichern". Wie kann ich erreichern, dass das was in die Felder eingetragen wurde in dieser Form in der test.ini gespeichert wird?
Edit1 = "Wert"
Edit2 = "Wert 3"
Edit3... usw.
Das zweite wäre, wie kann ich diese Felder abhohlen, wenn die Form mit den Feldern lädt (also z. B. Form1.OnCreate).
Hoffe mir kann jemand helfen und das man dies dann unter FAQs setzt, kenne nämlich viele, welche genau das selbe vorhaben und nicht draufkommen.
Grüße & lieben Dank.
Chris
DeCodeGuru - Mo 25.08.03 11:08
Guck dir mal folgenden Code an (ist nur ein Testcode, den man noch mit Sicherheitsabfragen etc. ausstatten müsste):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| procedure TForm1.Button1Click(Sender: TObject); var MyIni: TIniFile; i: Integer; begin MyIni := TIniFile.Create('C:\Dokumente und Einstellungen\Jakob\Desktop\Test.ini'); try for i := 1 to 5 do MyIni.WriteString('Section_1','Edit' + IntToStr(i),TEdit(FindComponent('Edit' + IntToStr(i))).Text); finally MyIni.Free; end; end;
procedure TForm1.Button2Click(Sender: TObject); var MyIni: TIniFile; i: Integer; begin MyIni := TIniFile.Create('C:\Dokumente und Einstellungen\Jakob\Desktop\Test.ini'); try i := 1; while MyIni.ValueExists('Section_1','Edit' + IntToStr(i)) do begin TEdit(FindComponent('Edit' + IntToStr(i))).Text := MyIni.ReadString('Section_1','Edit' + IntToStr(i),'kA'); Inc(i); end;
finally MyIni.Free; end; end; |
Funktioniert bei mir einwandfrei. Ich habe 2 Buttons und 5 Edits verwendet. Achja, die Edits müssen aber den "Standardnamen" haben.
chris_davidi - Mo 25.08.03 11:17
Danke. :) Der Code sieht schonmal sehr gut aus, leider komme ich nicht weiter. Habe es eingebaut, aber es kommt, dass "MyIni: TIniFile;" ein undefinierter Bezeichner ist. Aber es ist doch bei
Quelltext
1: 2: 3:
| var MyIni: TIniFile; i: Integer; |
definiert, oder verstehe ich da etwas falsch?
derDoc - Mo 25.08.03 11:20
Binde doch mal die Unit IniFiles mit ein.
chris_davidi - Mo 25.08.03 11:25
Ok danke, klappt. Nun wird aber dann noch ValueExists als undefinierter Bezeichner ausgegeben. Wie heißt die Unit dafür? Im allgemeinen, wo bekomme ich Informationen über die Untis her?
derDoc - Mo 25.08.03 11:32
Am einfachsten bekommst du die Units, indem du den undefinierten Bezeichner markierst und dann F1 drückst.
Bei meinem Delphi 6 Pro ist ValueExists auch in der Unit IniFiles definiert. Bei Delphi 3 scheint das aber anders zu sein.
chris_davidi - Mo 25.08.03 11:35
Kann man die Unit von Delphi 6 einfach in Delphi 3 einbinden? Dann wäre doch das Problem gelöst, oder?
derDoc - Mo 25.08.03 11:53
Ich glaube das geht nicht. Die Unit benötigt auch aus anderen Units Teile und somit wäre das nur schwer möglich.
chris_davidi - Mo 25.08.03 12:03
Ok. Schade. :( Hast du sonst einen Tipp, wie ich das Problem lösen kann?
derDoc - Mo 25.08.03 12:08
Schau mal in deiner Hilfe nach, in welcher Unit TCustomIniFile definiert ist. ValueExists ist eine Methode von dieser Klasse.
chris_davidi - Mo 25.08.03 12:14
In meiner Hilfe gibt es TCustomIniFile gar nicht. Bringt mich also leider auch nicht weiter... *seuftz*
DeCodeGuru - Mo 25.08.03 12:34
| Zitat: |
| Ich glaube das geht nicht. Die Unit benötigt auch aus anderen Units Teile und somit wäre das nur schwer möglich. |
Welche Teile denn, die es unter Delphi 3 nicht gibt?
@chris: Leite doch TIniFile ab und füge eine entsprechende Funktion hinzu.
Achja, ich weiss ja nicht, wie es rechtlich aussieht, aber ich glaube kaum, dass du eine Unit aus D6Pro einfach so verwenden darfst. :?
chris_davidi - Mo 25.08.03 12:35
Öhm... Ableiten? Davon habe ich leiter keine Ahnung, des müsste mir jemand genau erklären, des wär lieb.
DeCodeGuru - Mo 25.08.03 12:45
ok, schau dir das mal an (unterhalb der Form-Deklaration einfügen).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| type TMyIniFile = class(TIniFile) public function ValueExists(const Section, Ident: string): Boolean; end;
var Form1: TForm1;
implementation
{$R *.DFM}
function TMyIniFile.ValueExists(const Section, Ident: String): Boolean; var S: TStrings; begin S := TStringList.Create; try ReadSection(Section, S); Result := S.IndexOf(Ident) > -1; finally S.Free; end; end; |
Achja, weiss nicht genau, ob das funtzt, da ich das nur in den Codeeditor getippt habe aber nicht getestet habe.
Vorraussetzung dafür ist aber, dass deine TIniFile die Methode ReadSection kennt. :?
Ansonsten musste du halt weitercoden. :)
chris_davidi - Mo 25.08.03 13:18
Danke. :)
Habe ich nun gemacht. Nun wird folgende Zeile makiert und es kommt "Funktion erwartet Ergebnistyp".
Quelltext
1:
| function TMyIniFile.ValueExists(const Section, Ident: String): Boolean; |
Mit selber Coden komme ich leider nicht weiter, weil ich momentan noch am lernen bin. Wenn ich des eben auch irgendwann mal verstehe. :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!