Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#329

AW: himXML (gesprochen himix ML)

  Alt 23. Jan 2017, 15:00
Seit wann hat TIniFile eigentlich wieder die 64 KB-Grenze?

Also mit meinem veraltete Delphi 7 und Windows XP hab' ich auch mit größeren INI-Dateien keine Probleme. Die größte, die ich gerade gefunden habe ist 308.873 Byte.

Ich vermute jetzt mal ganz dreist: Diese 64 KB-Einschränkung gibt es schon länger nicht mehr, als ein Teil der Forumsteilnehmer alt ist.

Mit folgendem Nonsens lässt sich eine INI-Datei von 882.800 Byte schreiben und lesen und wiederlegt nebenbei auch die Richtigkeit dieser Behauptung:
Zitat von p30826:
Sobald Du z.B. "käsesorte=Belgrader blauschimmel" verwenden willst, bekommst Du ein Problem. Zum einen mit dem Umlaut zum anderen den String aus zwei Worten.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
          Ini : TIniFile;
          i : Integer;
          k : Integer;
begin
  ini := TInifile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  for i := 1 to 100 do begin
    for k := 1 to 100 do begin
      ini.WriteString(Format('Käsesortensortiment %.4d',[i]),Format('Käsesorte %.4d Käselieferant %.4d',[i,k]),Format('Dieser Käse enthält pro %.4d Gramm ca. %.4d Kalorien',[k,i]));
    end;
  end;
  ini.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
          Ini : TIniFile;
          sl1 : TStringList;
          sl2 : TStringList;
begin
  ini := TInifile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  sl1 := TStringList.Create;
  sl2 := TStringList.Create;
  ini.ReadSections(sl1);
  ShowMessage(Format('Die Ini-Datei %s enthält %d Sections.',[ini.FileName,sl1.Count]));
  ShowMessage(Format('Der Name der letzten Section ist %s',[sl1[sl1.Count - 1]]));
  ini.ReadSection(sl1[sl1.Count - 1],sl2);
  ShowMessage(Format('Der Namen in der letzten Section sind %s',[sl2.Text]));
  ShowMessage(Format('Letzter Eintrag ist: %s',[ini.ReadString(sl1[sl1.Count - 1],sl2[sl2.Count - 1],'Upps, nicht gefunden')]));
  sl2.Free;
  sl1.Free;
  ini.Free;
end;

end.
Und wer in den For-Schleifen die 100 durch 'ne größere Zahl ersetzt, bekommt bestimmt auch größere INI-Dateien zustande und gelesen.
  Mit Zitat antworten Zitat