AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Tstringlist hat ein Maximum von 3277 Zeilen?

Ein Thema von muhael · begonnen am 26. Aug 2015 · letzter Beitrag vom 26. Aug 2015
Antwort Antwort
Seite 4 von 4   « Erste     234
nahpets
(Gast)

n/a Beiträge
 
#31

AW: Tstringlist hat ein Maximum von 3277 Zeilen?

  Alt 26. Aug 2015, 18:39
Um diese Ini zu lesen, braucht man nicht unbedingt IniFiles (laut Delphi 7-Sourcen mit einer Begrenzung auf 16384 Byte - {delphi}\rtl\IniFiles.pas)
Delphi-Quellcode:
var
     sl : TStringList;
     slSections : TStringList;
     i : Integer;
begin
  sl := TStringList.Create;
  slSections := TStringList.Create;
  sl.LoadFromFile('dateiname.ini');
  for i := 0 to sl.Count - 1 do begin
    if Copy(sl[i],1,1) = '[then begin
      slSections.Add(AnsiReplaceText(AnsiReplaceText(sl[i],'[',''),']',''));
    end;
  end;
  ...
end;
Damit hat man in slSection eben alle Sections.
Die kann man dann, wie auch immer abarbeiten.

Der Zugriff auf eine Section kann dann so erfolgen:
Delphi-Quellcode:
  iIndex := sl.IndexOf(Format('[%s]',[slSection[i]]));
  if iIndex > -1 then begin
    // Bei der Struktur der Beispiel-Ini von weiter oben:
    // [1000]
    // Name=Max1
    // Nachname=Mustermann1
    // Kostenstelle=1
    // Punkte=10
    sName := sl[iIndex + 1];
    sNachname := sl[iIndex + 2];
    sKostenstelle := sl[iIndex + 3];
    sPunkte := sl[iIndex + 4];
  ...
end;
Das kann man so nur machen, wenn man sich auf die Struktur absolut verlassen kann, ansonsten eben die "Datenübernahme" in eine plausible Logik packen und das Überschreiten von sl.Count - 1 beachten.
Delphi-Quellcode:
  iIndex := sl.IndexOf(Format('[%s]',[slSection[i]]));
  if iIndex > -1 then begin
    ...
    // Schreiben dann halt mit:
    sl[iIndex + 1] := sName;
    sl[iIndex + 2] := sNachname
    sl[iIndex + 3] := sKostenstelle;
    sl[iIndex + 4] := sPunkte;
  end else begin
    sl.Add(Format('[%s]',[slSection[i]]));
    sl.Add(sName);
    sl.Add(sNachname);
    sl.Add(sKostenstelle);
    sl.Add(sPunkte);
  end;
  sl.SaveToFile('dateiname.ini');
end;
Wer fleißig ist, baut sich 'ne Klasse, die das Ganze kapselt und pfeift auf die INI-Beschränkungen...
  Mit Zitat antworten Zitat
hoika

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

AW: Tstringlist hat ein Maximum von 3277 Zeilen?

  Alt 26. Aug 2015, 21:25
Hallo,

an den TE, was spricht gegen TMemIniFile (wie schon mehrfach erwähnt?)


Heiko
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:25 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