Einzelnen Beitrag anzeigen

Drahcir

Registriert seit: 13. Jun 2012
34 Beiträge
 
Delphi 6 Personal
 
#5

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

  Alt 23. Jun 2012, 08:41
es tut mir leid aber das funktioniert immer noch nicht >.> ich hau hier jetzt einfach mal den ganzen quelltext samt fehlermeldung die dabei entsteht rein
(Ja ich weiß ich hab ne komische Art der Sortierung...):

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;

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

    if (pos(cbSpieler.Text, Ein) <> 0) //In einer TCombobox eingetragener Wert
    AND (pos('logged in with entity id', ein) <> 0) //Ein weiteres "SuchWort" im Text
    then begin
      {*** Uhrzeit ***}
      for I := 12 to 19 do Uhrzeit := Uhrzeit + ein[I];
      DatumAusgelesen := leftStr(Ein,10);

      {*** Datum ***}
      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];
      hLogInFenster.cbLogins.Items.Add(Datum); //eintragen der Daten in eine TCombobox

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

      {*** Eintragen des Datums, Uhrzeit und Koordinaten in die .ini ***}
      try LogIns := ExtractFilePath(ParamStr(0)) + 'LogIns.ini';
          LogInIni := TIniFile.Create(LogIns);
          LogInIni.WriteString(Datum, Uhrzeit, Koordinaten);
      finally LogInIni.Free; end;

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

    {*** Löschen doppelter Einträge ***}
    for I := 0 to hLogInFenster.cbLogIns.Items.Count - 1 do
      if hLogInFenster.cbLogIns.Items[i] = hLogInFenster.cbLogIns.Items[i+1]
      then hLogInFenster.cbLogIns.Items.Delete(i);
  end;

  {****** Hier hat das Programm Probleme ... *****}
  sl1 := TStringList.Create; sl2 := TStringList.Create;
  Anzahl := 0;
  LogInIni.ReadSections(sl1);

  for I := 0 to sl1.Count - 1 do begin
    LogInIni.ReadSection(sl1.Strings[I], sl2); // Ich denke mal hier liegt das Problem mit Schreiben nach sl2
    Anzahl := Anzahl + sl2.Count;
  end;

  hLogInFenster.Label1.Caption := IntToStr(Anzahl);
  {****** *****}

  hLogInFenster.Show;
end;
Ich denke mal der Fehler taucht an der Stelle auf wo ich LogInIni.ReadSection(sl1.Strings[I], sl2); eintragen lasse, da er in der Klammer TStrings haben möchte, sl2 aber eine TStringList ist.
Wenn ich das so Laufen lasse gibts als Anzahl 0 zurück, wenn ich LogInIni.ReadSectionValues(sl1[I], sl2); mache gibts die angehängte Fehlermeldung.

Vielen Dank für die ersten Hilfen schonmal
Miniaturansicht angehängter Grafiken
fehlermeldung.jpg  
Es gibt nur 10 Arten von Menschen - die die Binärzahlen lesen können und den Rest

Geändert von TBx (25. Jun 2012 um 09:33 Uhr) Grund: Bild aus externer Quelle angehängt
  Mit Zitat antworten Zitat