Ini anlegen, schreiben und lesen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Ini anlegen, schreiben und lesen

Beitrag von jornbyte »

Hallo Leute

Ich möchte gern Programmeinstellungen in einer *.ini speichern. Das anlegen der ini habe ich bisher nicht geschafft. Meine frage ist: wie lege ich die *.ini an, Wie kann die beschrieben werden und wie geht das lesen?

Code: Alles auswählen

var  
  Form1: TForm1;  
  INI: TInifile;  
  A: Array[1..255] Of Integer;  
 
implementation  
 
{$R *.dfm}  
 
{...}  
 
// Array in INI-Datei Speichern   
procedure TForm1.Button1Click(Sender: TObject);   
Var  
  I: Integer;   
begin   
  Try  
    INI:= TIniFile.Create(ExtractFilePath(ParamStr(0))+'array.ini');   
    // ExtractFilePath(ParamStr(0)) liest den aktuellen Programmpfad aus  
    // somit wird deine INI-Datei im gleichen Ordner wie deine EXE  
    // gespeichert bzw. geöffnet   
    For I:= 1 To 255 Do  
      Begin   
        INI.WriteInteger('Sektion', 'Kanal'+IntToStr(I), A[I]);  
      End;   
    // Die ober Funktion wird 255 mal ausgeführt bis I= 255 ist  
    // und jeder Wert einzeln sauber abgespeichert        
  Finally  
    INI.Free;  
  End;   
end;  
 
// Array aus INI-Datei Lesen   
procedure TForm1.Button2Click(Sender: TObject);   
Var  
  I: Integer;   
begin   
  Try  
    INI:= TIniFile.Create(ExtractFilePath(ParamStr(0))+'array.ini');  
    For I:= 1 To 255 Do  
      Begin  
        A[I]:= INI.ReadInteger('Sektion', 'Kanal'+IntToStr(I), 0);  
      End;   
    // Und hier fasst das gleiche nur umgedreht  
    // Wir teilen dein Array "A" jeden Wert aus der INI-Datei zu   
    // Falls du in der oberen Schleife nichts mehr hinzufügen möchtest  
    // kannst du das "Begin" und "End;" entfernen   
  Finally  
    INI.Free;  
  End;  
end;
Dieser Qellcode geht nicht (tausend Fehlermeldungen)
Gebt mir bitte mal eine Starthilfe.
Danke für das Lesen und Helfen.
Jorn

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Also die Ini wird automatisch erst beim Speichern als Datei erzeugt und die datei wird nicht im Create erzeugt. Ebenso beim Laden, du musst die Ini erst mit Create erzeugen und erst daraufhin kannst du die Ini über LoadFromFile(Dateiname) mit daten füllen und diese daten dann aus der Ini auslesen.
Mal als Beispiel, wie das erstellen geht:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);   
Var 
  I: Integer;   
begin   
  INI:= TIniFile.Create; 
  Try 
    //Ini mit Daten füllen...
    For I:= 1 To 255 Do 
      Begin   
        INI.WriteInteger('Sektion', 'Kanal'+IntToStr(I), A[I]); 
      End;   
    Ini.SaveToFile(Dateiname)
    //erst hier wird die Ini als datei erstellt, wenn noch nicht vorhanden    
  Finally 
    INI.Free; 
  End;   
end;

Benutzeravatar
theo
Beiträge: 10858
Registriert: Mo 11. Sep 2006, 19:01

Re: Ini anlegen, schreiben und lesen

Beitrag von theo »

Der Code funktioniert schon.

Ich frage mich nur ob du überhaupt Lazarus und nicht Delphi verwendest.
{$R *.dfm} deutet nicht darauf hin.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Ini anlegen, schreiben und lesen

Beitrag von monta »

theo hat geschrieben:Der Code funktioniert schon.

Ich frage mich nur ob du überhaupt Lazarus und nicht Delphi verwendest.
{$R *.dfm} deutet nicht darauf hin.
wieder was gelernt, auch wenn meiner auch geht, aber das man den Dateinamen direkt beim Create angeben kann, war mir neu.

Benutzeravatar
theo
Beiträge: 10858
Registriert: Mo 11. Sep 2006, 19:01

Re: Ini anlegen, schreiben und lesen

Beitrag von theo »

monta hat geschrieben: wieder was gelernt,
Siehste ;-)

Funktioniert eigentlich das Werkzeug "Delphi-Projekt in Lazarus-Projekt übersetzen"?
Ich hab's noch nie getestet. Könnte man das jornbyte empfehlen?

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Also, der Quelltext stammt aus Delphi. In Lazarus meckert er gleich "INI:= TIniFile.Create;" an. Da ich ich nicht so die Erfahrung habe, habe ich mal gefragt, wie das geht. Und noch was.. es soll unter Win und Linux funktionieren.
mfg Jornbyte
http://forum.electronicwerkstatt.de/phpBB/" onclick="window.open(this.href);return false;

Benutzeravatar
theo
Beiträge: 10858
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Also vielleicht muss du mal die unit inifiles hinzufügen.

Ansonsten ist "meckert" weniger aussagekräftig, als wenn du mal die Fehlermeldung posten würdest ;-)

Wegen Win und Lin brauchst du dir keine Sorgen machen.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Ini anlegen, schreiben und lesen

Beitrag von monta »

theo hat geschrieben:Funktioniert eigentlich das Werkzeug "Delphi-Projekt in Lazarus-Projekt übersetzen"?
Ich hab's noch nie getestet. Könnte man das jornbyte empfehlen?
Ja, dieses Werkzeug funktioniert soweit und könnte bei dem Problem durchaus helfen, solange du nicht sehr viele Fremdkomponenten bzw. Komponeten die es in Lazarus nicht gibt hast, sollte es damit schnell gehen und kleinere Anpassungen kannst du ja dann noch machen.

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Wo ist die? Wie geht das? Mach doch bitte mal ne kleine Anleitung, ist bestimmt auch für andere Hilfreich.
mfg Jornbyte
http://forum.electronicwerkstatt.de/phpBB/" onclick="window.open(this.href);return false;

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Naja wenn man unfähig ist mal die menüs durchzuschaun hilft auch keine Anleitung mehr.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Also vielleicht muss du mal die unit inifiles hinzufügen
Darauf bezog sich
Wo ist die? Wie geht das?
Im Prgroammverzeichnis Lazarus/unit/ ist die nicht zu finden :(

Die Fehlermeldung bei: ini: TIniFile;
volumen.pas(103,8) Error: Identifier not found "TIniFile"

Benutzeravatar
theo
Beiträge: 10858
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

jornbyte hat geschrieben:
Also vielleicht muss du mal die unit inifiles hinzufügen
Darauf bezog sich
Wo ist die? Wie geht das?
Im Prgroammverzeichnis Lazarus/unit/ ist die nicht zu finden :(

Die Fehlermeldung bei: ini: TIniFile;
volumen.pas(103,8) Error: Identifier not found "TIniFile"
Na wie wohl?

Uses IniFiles;

Das ist doch in Delphi auch nicht anders.

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Uses IniFiles;
Das war das Zauberwort, es klappt.
Vielen vielen Dank.
Zuletzt geändert von jornbyte am Mo 18. Dez 2006, 20:51, insgesamt 1-mal geändert.
mfg Jornbyte
http://forum.electronicwerkstatt.de/phpBB/" onclick="window.open(this.href);return false;

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Villeicht hilft dir ein Objektpascal tuturial weiter, die uses section ist nun wirklich das was man in der ersten halben stunde mit pascal lernt...

Es gibt hier sonen schönen tuturial Thread da wirst du sicher fündig.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Hallo Christian
Ich schreibe im allgemeinen ASM. Dieses ist mein 1. Lazarusprojekt. Entschuldige, wenn da Fragen kommen, die für dich primitiv sein mögen.
Es könnte sein, dass da noch Fragen offen sind, da werde ich bestimmt eure Hilfe wieder benötigen. In meinem Quelltext (570 Zeilen bis jetzt) fehlt noch einiges.

@ all
Frohes Fest

mfg Jorn
http://forum.electronicwerkstatt.de/phpBB/" onclick="window.open(this.href);return false;

Antworten