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?
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
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:
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;
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.
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.
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.