18. marts 2007 - 21:59Der er
7 kommentarer og 1 løsning
Inifiler uden sections
Hey,
Jeg har brug for at kunne læse/skrive til inifil lignende filer. Jeg har prøvet at bruge "Inifiles" til dette formål men dette virker ikke da de filer jeg manipulerer ikke har nogle sections...
jeg har filer med dette indhold:
Server=xxx Hostname=yyy ListenPort=zzz
Der er ingen sections og der er ikke mulighed for at tilføje sections... er der nogle der har en god ide til hvordan jeg så manipulerer disse filer?
procedure TForm1.BLoadClick(Sender: TObject); var SList: TStringList; i, tmpPos, tmpLength: Integer; begin SList := TStringList.Create; SList.LoadFromFile('config.txt'); For i := 0 To SList.Count -1 Do Begin tmpPos := Pos('=',SList.Strings[i]) + 1; tmpLength := Length(SList.Strings[i]) + 1; If Pos('Server',SList.Strings[i]) > 0 Then Edit1.Text := Copy(SList.Strings[i],tmpPos,tmpLength-tmpPos) Else If Pos('Hostname',SList.Strings[i]) > 0 Then Edit2.Text := Copy(SList.Strings[i],tmpPos,tmpLength-tmpPos) Else If Pos('ListenPort',SList.Strings[i]) > 0 Then Edit3.Text := Copy(SList.Strings[i],tmpPos,tmpLength-tmpPos); End; SList.Free; end;
procedure TForm1.BSaveClick(Sender: TObject); var SList: TStringList; i, tmpPos: Integer; begin SList := TStringList.Create; SList.LoadFromFile('config.txt'); For i := 0 To SList.Count -1 Do Begin tmpPos := Pos('=',SList.Strings[i]); If Pos('Server',SList.Strings[i]) > 0 Then SList.Strings[i] := Copy(SList.Strings[i],0,tmpPos) + Edit1.Text Else If Pos('Hostname',SList.Strings[i]) > 0 Then SList.Strings[i] := Copy(SList.Strings[i],0,tmpPos) + Edit2.Text Else If Pos('ListenPort',SList.Strings[i]) > 0 Then SList.Strings[i] := Copy(SList.Strings[i],0,tmpPos) + Edit3.Text End; SList.SaveToFile('config.txt'); SList.Free; end;
Vil da lige nævne at TStringList har funktioner til at håndtere Navn=Value linier så alt det snowball skriver er slet ikke nødvendig:
Det kan gøres ganske enkelt således:
var StringList : TStringLIst; Server : string; begin StringList:=TStringLIst.Create; StringList.LoadFromFile('Dinfil.txt'); Server:=StringList.Values['Server'];
Kik også på funktionerne ValueFromIndex, IndexOf og IndexOfName.
Hey Kroning, takker for super input! Fedt at du ikke er motiveret af pointene.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.