AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ini Datei - Zeile2, 4 Stelle auslesen

Ein Thema von Chakvour · begonnen am 17. Feb 2010 · letzter Beitrag vom 17. Feb 2010
Thema geschlossen
Seite 1 von 2  1 2      
Chakvour

Registriert seit: 6. Nov 2009
Ort: Kiel
21 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 03:45
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;
 
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 05:17
Zitat von Chakvour:
...
[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?
Warum schreibst du einen String in die .ini Datei, wenn du dir nur eine Zahl 'merken' willst?

die umständliche Variante1 "mit der Kirche ums Dorf":
Delphi-Quellcode:
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)
die bessere Variante:
Delphi-Quellcode:
Du benutzt WriteInteger
zB: WriteInteger ('Section' , 'Punktestand' , Score);
und liest dasselbe mit ReadInteger wieder ein...
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
 
Chakvour

Registriert seit: 6. Nov 2009
Ort: Kiel
21 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 06:05
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:
¬Running - under¬
*¬Status: *¬ Alive - running for 261 min
*¬Current Profile: *¬ profil/profile.ini (current Level: 2)
*¬Money: *¬ 0p 0s 0c (Total: 0p 0s 0c) *¬ *¬-*¬ *¬ *¬per Hour: *¬ 0p 0s 0c
*¬Dude: *¬ 0 (424936/1523800) [0%] *¬ *¬-*¬ *¬ *¬per hour: *¬ 0 (0 h)
*¬made: *¬ 0 (0 / Hour) - Honor: 0
Diese kann ich mit einem Befehl aktualisieren über einen Chat
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
 
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 07:10
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
Heiko
 
Chakvour

Registriert seit: 6. Nov 2009
Ort: Kiel
21 Beiträge
 
RAD-Studio 2009 Pro
 
#5

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 07:24
habs schon gelöst mit del und copy.
habe es bei der konkurrenz gefunden. da gab es ein tutorial über die stringverarbeitung

Delphi-Quellcode:
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;
Edit

Hatte jetzt zwar kleine Probleme da Werte sich ändern und diese nicht ersetzt wurden konnte.
Also habe ich dann einfach die Zeilen gelöscht.

copy(s, 1, 28); Danke dir trotzdem nochmal für deine Hilfe


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?
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 10:03
Warum schreibst du den Text mit in die Ini? Lass den doch weg.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 10:15
Hallo,

nach #3 schreibt er den Text ja nicht selbst,
sondern er wird geschrieben und er will die Daten nur rausholen.


Heiko
Heiko
 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 10:23
Aber man könnte ja bereits den Eingabestring parsen und nur die benötigten Infos in die Ini schreiben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
 
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 10:51
Zitat von hoika:
Hallo,

nach #3 schreibt er den Text ja nicht selbst,
sondern er wird geschrieben und er will die Daten nur rausholen.


Heiko
Doppelt hält besser? Ich denke sich irgendwo zwischen zu hängen ist schwieriger als einfach nur ein String zu parsen

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
 
Chakvour

Registriert seit: 6. Nov 2009
Ort: Kiel
21 Beiträge
 
RAD-Studio 2009 Pro
 
#10

Re: Ini Datei - Zeile2, 4 Stelle auslesen

  Alt 17. Feb 2010, 12:56
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;
 
Thema geschlossen
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz