| Autor |
Beitrag |
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: Sa 07.10.06 18:19
versuchen wirs mal anders.
Ich bin (oder besser will) auf .ini files umsteigen. Habe mir mal folgendes angesehen tutorial angesehen.
jetzt begints:
Delphi-Quelltext
"E2003 undefinierter bezeichner 'TIniFile'" aber beim tutorial auf seite 3 steht das so....
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 07.10.06 18:31
Dann sollte man auch richtig lesen, dort steht
Um auf Ini-Dateien zugreifen zu können, muss die Unit IniFiles in die uses-Klausel aufgenommen werden.
Schau Dir mal den an find Ich besser (Geschmackssache)
www.kuknet.de/tutori...%22ini%20tutorial%22
|
|
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: So 08.10.06 22:29
Danke für das tut.
Ist gut.
Problem.
Dort steht: Die befehle WriteString, WriteInteger und/oder WriteBool sooft hinschreiben bis man alle daten gespeichert hat.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| if not FileExists('./Settings.ini') then seti := TIniFile.create('./Settings.ini');
name := edit3.Text; ort := edit5.Text;
seti.WriteString('Speicherorte', ''+name+'', ''+ort+''); seti.WriteString('Speicherorte', name, edit5.Text); seti.Free; |
nunja. Warum geht da nich? 'Zugriffsverletzung an adresse 00000000'.
|
|
Odeng
Hält's aus hier
Beiträge: 14
Win XP
Delphi, Perl, VB, C++
|
Verfasst: So 08.10.06 22:55
Hallo!
Wenn ich deinen Code richtig interprtiere öffnest du nur eine IniDatei, wenn keine existiert (Das ist auch gut so) wohin sollen denn die Daten geschrieben werden, wenn diese Datei bereits existiert?
Delphi-Quelltext 1: 2: 3: 4:
| if not FileExists('./Settings.ini') then seti := TIniFile.create('./Settings.ini') else seti := TIniFile.open('./Settings.ini'); |
Dies alles ohne je was mit IniFiles gemacht zu haben 
_________________ __________________
Es gibt nichts Gutes, außer man tut es
|
|
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: So 08.10.06 23:13
Danke für die Antwort.
Sry aber "Undefinierter bezeicher: 'open'".?
|
|
Odeng
Hält's aus hier
Beiträge: 14
Win XP
Delphi, Perl, VB, C++
|
Verfasst: So 08.10.06 23:26
Hallo!
Ja, stimmt. Du musst die Datei offnen, ohne sie zu löschen. Wahrscheinlich wird es TIniFile.asign(....) heißen.
_________________ __________________
Es gibt nichts Gutes, außer man tut es
|
|
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: So 08.10.06 23:29
Danke auch für die Antwrot.
Anber wieder nicht... WArum passiert das nur mir? damn. xD
[edit]
Also delphi hat ja forschläge. und wnen ich TiniFile. eingebe kommt sonen menue, und da steht NUR create. Also gibt es nur die MEthode ceate.. Eigenartig.
|
|
Odeng
Hält's aus hier
Beiträge: 14
Win XP
Delphi, Perl, VB, C++
|
Verfasst: Mo 09.10.06 00:00
So, ich wollte zwar gerade ins Bett gehen, wollte dich aber dann auch nicht dumm sterben lassen und habe mir das Problem einmal angesehen:
Folgende Quellcode ist dabei herausgekommen (getestet)
In den Uses musst du INIFiles aufnehmen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| . . . interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IniFiles;
type . . . |
Der weitere Quellcode ist Kommentiert. Sektion, Eigenschaft und Wert entspricht deinen Edit-Feldern und kann ggf. durch dich angepasst werden.
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 XY-ungeloest; var IniFile : TIniFile; Sektion, Eigenschaft_String, Eigenschaft_Int, Wert_String : String; Wert_Int : Integer; Begin Sektion:='Dein_Teilbereich_der_Datei'; Eigenschaft_String:='String_Beschreibung_dessen_was_du_speichern_willst'; Wert_String:='Wert_den_du_Speichern_willst.'; Eigenschaft_Int:='Int_Beschreibung_dessen_was_du_speichern_willst'; Wert_Int:=123456789;
IniFile := TIniFile.create('c:\Settings.ini'); IniFile.WriteString(Sektion, Eigenschaft_String, Wert_String); IniFile.WriteInteger(Sektion, Eigenschaft_Int, Wert_Int); IniFile.Free; end; |
Eine Ini-Datei wird in Bereiche (oben Sektion) aufgeteilt, die logische Einheiten bilden. damit kannst du deine Datei strukturieren.
Innerhlab dieser Bereiche gibt es unbegrenzt viele Einträge (oben Eigenschaften) die alle einen Wert (oben Wert) haben.
Die Datei sieht dann wie folgt aus
Delphi-Quelltext 1: 2: 3:
| [Dein_Teilbereich_der_Datei] String_Beschreibung_dessen_was_du_speichern_willst=Wert_den_du_Speichern_willst. Int_Beschreibung_dessen_was_du_speichern_willst=123456789 |
Du solltest es evt. noch in ein Try-Finally klammern, um die gewünschte Fehlersicherheit herbei zu führen (Wer weiß, wozu es gut ist...)
Äquivalent zu dieser Write-Methode kannst du eine Read-Methode programmieren. Dazu musst du nur die IniFile.WriteString(...); durch IniFile.ReadString(...); ersetzen.
So, ich hoffe, dir hilft das. Viel Spaß damit!
Oliver Dujardin
_________________ __________________
Es gibt nichts Gutes, außer man tut es
|
|
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: Mo 09.10.06 00:06
Oli << wenn ich dich so nenen darf
Ich DANKE dir. Es klappt. jetzt weis ich was ich ncoh alles tun kann........
|
|
Odeng
Hält's aus hier
Beiträge: 14
Win XP
Delphi, Perl, VB, C++
|
Verfasst: Mo 09.10.06 00:10
Als Namensfetter will ich dir mal erlauben mich so zu nenne  )
Freut mich, das ich heöfen konnte.
So, jetz aber gute Nacht
_________________ __________________
Es gibt nichts Gutes, außer man tut es
|
|
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: Mo 09.10.06 21:41
Danke für die Erlaubniss.
So, ich bin recht weit gekommen.
Aber jetzt kommt was:
Ich habe nen Loginfenster.
Jetzt will ich, dass wenn man was falsches eingibt, nicht das programm abstürtzt sondern nen error meldung kommt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if (edit1.Text = '') or (edit2.text = '') then label4.Caption := 'Bitte kontacktdaten eingeben' else begin name := edit1.text; seti := TIniFile.create('./Settings.ini'); pfad := seti.ReadString('Speicherorte', edit1.text, ''); pfad := pfad+name+'.ini';
save := TIniFile.Create(pfad); PageControl1.ActivePage:= PageControl1.Pages[2]; end; |
Wenn ich also 'ccs' eingebe, dens ja nciht gibt, soll ne meldung kommen: "Sie haben einen falschen usernamen angegeben".
[edit]
ps: weis echt nicht wonach ich da suchen muss.
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mo 09.10.06 21:56
such nach try...except 
|
|
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: Mo 09.10.06 22:03
Er soll guggen ober er in der .ini datei einen eintrag findet, der mit edit1.text übereinstimmt.
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mo 09.10.06 22:11
Meinst du das ?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| if (edit1.Text = '') or (edit2.text = '') then label4.Caption := 'Bitte kontacktdaten eingeben' else begin name := edit1.text; seti := TIniFile.create('./Settings.ini'); pfad := seti.ReadString('Speicherorte', edit1.text, ''); if pfad <> '' then begin pfad := pfad+name+'.ini';
save := TIniFile.Create(pfad); PageControl1.ActivePage:= PageControl1.Pages[2]; end else ShowMessage("Sie haben einen falschen usernamen angegeben"); end; |
|
|
5M17H 
      
Beiträge: 164
XP, Vista32, bald auch Vista64
PHP(3/5), Delphi(2), Java(1), C(3), C#(1)
|
Verfasst: Mo 09.10.06 22:16
Ja danke. Jetzt gehts.
COOl. F(r)eueralarm...
|
|
|