![]() |
Ini Datei - Zeile2, 4 Stelle auslesen
Hallo,
ist es irgendwie möglich wie im Topic beschrieben eine bestimmte Stelle in der Ini auszulesen? Ich weiss bis jetzt nur wie man die Eigenschaften und Werte ausliesst. Doch eine Zeile ist komplett eingetragen wovon ich haber nur die 4 Stelle benötige. Beispiel [Section] Eigenschaft0=Wert0 Eigenschaft1=Du hast dir 234 Punkte verdient! Eigenschaft2=Wert2 Wie gesagt, es soll also die 234 ausgelesen werden. So das Problem ist eigentlich das es ja nicht immer eine 234 ist. Ist sowas möglich genau die Stelle auszulesen? Achso, so sieht das bisher aus. Dient nur als orientierung. Später kommt der Button-Klick in den einen Timer. Dort wird ein Befehl ausgeführt der Daten ausliesst und in eine Memo schreibt. Die wiederrum werden jetzt durch den Button-Klick in die ini geschrieben die ich dann später im Label ausgeben möchte. Deswegen müsste ich wissen ob ich eine bestimmt Stelle auslesen kann.
Delphi-Quellcode:
function SaveListBoxToIni(const IniPath, Section: String;
List: TStrings): Boolean; var k: Integer; begin with TIniFile.Create(IniPath) do try EraseSection('Details'); for k := 0 to List.Count - 1 do WriteString(Section, IntToStr(k), Format('"%s"',[List[k]])); Result := True; finally Free end; end; procedure TForm1.Button3Click(Sender: TObject); var i: integer; LineCount: integer; IniPath: String; begin IniPath := ChangeFileExt(Paramstr(0), '.ini'); if SaveListBoxToIni(IniPath, 'Details', Memo1.Lines) then ShowMessage('Alles gespeichert!'); end; |
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Zitat:
die umständliche Variante1 "mit der Kirche ums Dorf":
Delphi-Quellcode:
die bessere Variante:
Du lässt das WriteString wie es ist und
- liest ein mit ReadString - zerlegst dann den String und holst die Zahl raus (erst copy, dann StrToInt)
Delphi-Quellcode:
Du benutzt WriteInteger
zB: WriteInteger ('Section' , 'Punktestand' , Score); und liest dasselbe mit ReadInteger wieder ein... |
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Hmm... das sieht aber anders aus als du denkst :) Ich kann mir nicht vorstellen die Daten mit WriteInteger zu schreiben.
Solche Daten rufe ich ab. * Zitat:
Danach werden sie in die Memo gelistet und dann in die ini. Dieses passiert alle 20sekunden. Damit ich das übersichtlicher habe, möchte ich die Werte in ein Label machen, die sich in einer Zeile befinden. z.B die Fett gemacht sind Ich hatte es schon probiert mit markieren und kopieren. Dabei ist mir aber eingefallen, das die Zeilen ja mal so und mal so lang sind. Genau Wörter könnte man löschen bzw durch nichts ersetzen. Da kommt aber in Zeile2 das Problem, da "profil/profile.ini" immer anders heisst. Ich habe schon einiges ausprobiert, hab's mir irgendwie leichter vorgestellt :) |
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Hallo,
leichter wird es, wenn du dir eine Funktion dazu geschrieben hast ;). Hole dir mit einer for-Schleife die einzelnen Zeichen des Strings, versuche daraus einen Integer zu basteln (TryStrToInt), bis TryStrToInt fehlschlägt am besten fängst du so an s:= '12345a'; Ergebnis 12345 TryStrToInt schlägt dann bei 12345a fehl dann s:= 'a12345b' 'a' muss dann rausfallen (Delete) Suche mal in google nach "delphi explode integer from string" Da findest du ein paar Ansätze. Heiko |
Re: Ini Datei - Zeile2, 4 Stelle auslesen
habs schon gelöst mit del und copy.
habe es bei der konkurrenz gefunden. da gab es ein tutorial über die stringverarbeitung
Delphi-Quellcode:
Edit
var StringList:TStringList;
posi:integer; s:string; begin StringList := TStringList.Create; try StringList.LoadFromFile('pfad\project1.ini'); s:=StringList.Text; delete(s, 1, pos('0="Running - ', s) + length('0="Running - ') - 1); label2.caption := copy(s, 1, pos('"', s) - 1); delete(s, 1, pos('(current Level: ', s) + length('(current Level: ') - 1); label4.caption := copy(s, 1, pos(')"', s) - 1); finally StringList.free; end; end; Hatte jetzt zwar kleine Probleme da Werte sich ändern und diese nicht ersetzt wurden konnte. Also habe ich dann einfach die Zeilen gelöscht.
Delphi-Quellcode:
Danke dir trotzdem nochmal für deine Hilfe
copy(s, 1, 28);
Hätte da noch ne Frage. Und zwar habe ich jetzt 5 Stück ersetzt was auch funktioniert. Allerdings wenn ich das mit 6 Stück machen will ist der letzte immer ausgeblendet, also unsichtbar. Warum ist das so? |
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Warum schreibst du den Text mit in die Ini? Lass den doch weg.
|
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Hallo,
nach #3 schreibt er den Text ja nicht selbst, sondern er wird geschrieben und er will die Daten nur rausholen. Heiko |
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Aber man könnte ja bereits den Eingabestring parsen und nur die benötigten Infos in die Ini schreiben.
|
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Zitat:
MfG Fabian |
Re: Ini Datei - Zeile2, 4 Stelle auslesen
Ja läuft nun alles. Nun weiss ich auch wie sowas leichtes geht :)
Naja die ini habe ich gemacht damit ich da diese 2 gänsefüsschen habe sonst wie gesagt bekomm ich hinten nicht alles ausgelesen. Ich habe da noch eine Frage. Ich möchte deswegen nicht einen neuen Thread aufmachen. Ich wollte gerne wenn ich den Channel joine eine Private MSG machen. Aber irgendwie haut das alles nicht so hin. Wie ich Nachrichten in den Channel schreibe ist mir klar, nur das mit dem PrivatenNachrichten nicht.
Delphi-Quellcode:
procedure TForm1.IdIRC1Join(ASender: TIdContext; const ANickname, AHost,
AChannel: string); begin idirc1.Say('PRIVMSG', nickname.text + texttonick.text); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz