Entwickler-Ecke
Dateizugriff - *.ini Lesen
jornbyte - So 20.04.03 20:51
Titel: *.ini Lesen
Hallo Leute , habe mal als blutiger Anfänger ne Frage :)
Ich habe mal aus dem Tuturial die *.ini verwendet.
Das schreiben klappt soweit gut. Nur beim Lesen bekomme ich den Fehler:
[Error] fiche1.pas(180): Not enough actual parameters ->zu dieser Zeile: var2 := ini.ReadInteger('Sektion2','Kanal',);
Ich arbeite mit Delphi7 und habe auch schon die Zeilen "try" und "finally" entfernt da diese auch angemeckert wurden.
Was muß geändert werden ?
Blackout - So 20.04.03 21:31
hi ,
du musst beim lesen eines Ini-Eintrags immer ein Standartwert mitgeben falls die INI-Datei noch nicht existiert oder der Wert nicht vorhanden ist
Falsch:
Quelltext
1:
| var2 := ini.ReadInteger('Sektion2','Kanal',); |
Richtig:
Quelltext
1:
| var2 := ini.ReadInteger('Sektion2','Kanal', 0); |
Wenn du jetzt den Wert in var2 einliest aber die INI oder der Wert nicht vorhanden ist bekommst du den Integer "0" andernfalls bekommst du dein gespeicherten Wert
jornbyte - So 20.04.03 22:03
Hi Blackout
Danke, es hat geklappt. Kannst du oder ein anderer noch mal Helfen?
Ich möchte ein Array in die ini schreiben und wieder Lesen können.
Das Array soll 255 Plätze haben (wert = array[1..255] of integer)
Nun soll ja -> ini.WriteInteger('Sektion2','Kanal',1234); soll so oft aufgerufen werden, wie es benötigt wird. Ich dachte da an eine Schleife, i ist dabei der Schleifenzähler.
i:=1
while i<256 do begin
ini.WriteInteger('Sektion2','Kanal'(wert[i]),wert[i]); // geht da auch ini.WriteByte
i:= i+1;
end;
Nun ja so geht es nicht, wie muß ich's richtig machen?
(viele Anfänerfragen :) )
jornbyte - So 20.04.03 22:38
Anmerkung: der Kanal soll am Ende die Zahl von 1 bis 255 haben.
Kanal1=129
Kanal2=255
Kanal3=0
....
Ich bekomme die Nummern nicht hin, erschreibt alle Zeichen des ASCII-Satzes (mit char -> ini.WriteInteger('Sektion2','Kanal'+char(i),wert[i])). Das wollte ich aber nicht.
Da ich es ja auch wieder lesen will, ist es da nicht besser auf Sektion zurückzugreifen? Nur wie bekomme ich die Nummer dahin?
Sektion2
Sektion3
Sektion4
Sektion5 .....
Blackout - So 20.04.03 22:51
hey jornbyte,
ich hab schon verstanden was du anstellen willst :wink:
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: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| 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; |
Die Kommentare solltest du einmal lesen dann kannste die auch entfernen :D
Ich hoffe das hilft dir
jornbyte - Mo 21.04.03 19:29
Kein Buch kann es so beschreiben. Ich kann da nur Danke sagen.
bis denne :wink:
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!