Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi .ini Datei Schlüssel aller Abschnitte zählen (https://www.delphipraxis.net/169006-ini-datei-schluessel-aller-abschnitte-zaehlen.html)

Drahcir 23. Jun 2012 20:02

AW: .ini Datei Schlüssel aller Abschnitte zählen
 
Zitat:

Zitat von Bummi (Beitrag 1172117)
statt mit Schleifen über z.B. ein[I] den String zusammenzubasteln, was schief geht wenn z.B. "ein" kürzer wäre als erwartet könntest Du Dir mal COPY anschauen ...

Ja Copy kenne ich und habs mit Coby probiert, aber ich finde es geht so einfacher (Der String verkürzt sich nicht, da dies eine Zeile ist die einheitlich vom System geschrieben wird) ;)

Habe die initialisierung nun aus der try-finally-anweisung raus geholt.
Damit ihr noch ein wenig Spaß mit meinem Müll haben könnt will ich euch nun mal eine aktualisierung schicken ;)

Delphi-Quellcode:
procedure TfrmMain.btLogInsClick(Sender: TObject);
var I, Zeile, Anzahl : Integer;
    LogInIni : TIniFile;
    Ein, Datum, DatumAusgelesen, Uhrzeit, Koordinaten, LogIns : string;
    sl1, sl2 : TStringlist;
begin
  hLogInFenster := TfrmLogInAnzeige.Create(frmMain);
  hLogInFenster.Left := frmMain.Left + frmMain.Width + 20;
  hLogInFenster.Top := frmMain.Top;

  LogIns := ExtractFilePath(ParamStr(0)) + 'LogIns.ini';
  LogInIni := TIniFile.Create(LogIns);

  for Zeile := 0 to hLogFenster.MemoLogAnzeige.Lines.Count-1 do begin
    ein := Utf8ToAnsi(hLogFenster.MemoLogAnzeige.Lines[Zeile]);

    if (pos(cbSpieler.Text, Ein) <> 0) AND (pos('logged in with entity id', ein) <> 0)
    then begin
      {*** Uhrzeit ***}
      for I := 12 to 19 do Uhrzeit := Uhrzeit + ein[I];
     
      {*** Datum ***} 
      DatumAusgelesen := leftStr(Ein,10);
      for I := 9 to 10 do Datum := Datum + DatumAusgelesen[I]; Datum := Datum + '.';
      for I := 6 to 7 do Datum := Datum + DatumAusgelesen[I]; Datum := Datum + '.';
      for I := 1 to 4 do Datum := Datum + DatumAusgelesen[I];

      if hLogInFenster.cbLogins.Items.IndexOf( Datum ) < 0
      then hLogInFenster.cbLogins.Items.Add(Datum);

      {*** Koordinaten ***}
      Koordinaten := copy(Ein, pos('(',Ein)+1,200);
      Delete(Koordinaten,pos(')',Koordinaten),1);

      {*** Eintragen des Datums, Uhrzeit und Koordinaten in die .ini ***}
      try LogInIni.WriteString(Datum, Uhrzeit, Koordinaten);
      finally end; //freigeben der LogInIni am Ende der Prozedur

      {*** Zurücksetzen der Variablen ***}
      Uhrzeit := ''; Datum := ''; Datumausgelesen := '';
    end;
  end;

  Anzahl := 0;
  sl1 := TStringList.Create; sl2 := TStringList.Create;
 
  try
    LogInIni.ReadSections(sl1);
    for I := 0 to sl1.Count - 1 do begin
      LogInIni.ReadSectionValues(sl1.Strings[I], sl2);
      Anzahl := Anzahl + sl2.Count;
    end;

    hLogInFenster.Label1.Caption := IntToStr(Anzahl);
    hLogInFenster.Show;
 
  finally LogInIni.Free; sl1.Free; sl2.Free; end;
end;
Ich denke man merkt das ich ein blutiger Anfänger bin was Programmieren betrifft, ich mache noch viele Fehler aber ich bin dankbar das man mich auf solche Mängel hinweist und Lösungsvorschläge dafür abgebt :) Danke.

Bummi 23. Jun 2012 21:29

AW: .ini Datei Schlüssel aller Abschnitte zählen
 
Deinen Code selbst als Müll zu bezeichnen klingt als ob Du die eine oder andere Antwort als Angriff verstanden haben könntest, gemeint war sicher keine so.
Um Erbsen zu zählen ....
Ich würde das Erzeugen von sl1 und sl2 direkt nach LogInIni := TIniFile.Create(LogIns);
einfügen und im Anschluss das TRY "öffnen"

Drahcir 23. Jun 2012 22:21

AW: .ini Datei Schlüssel aller Abschnitte zählen
 
Nein so meinte ich es nicht, nur im Vergleich zu dem was ihr mir hier "mal eben so aus dem Ärmel zaubert, es ist wohl wirklich das günstigste die Creates nacheinander zu nehmen und anschliessend ein try zu setzen.

Nochmals vielen Dank für eure Hilfen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Seite 2 von 2     12   

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