Format zapisu danych INI (limity)

Format zapisu danych INI (limity)
Pepe
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 505
0

Hej,
Bardzo lubię korzystać z formatu INI.
Używam klasy TMemIniFile, z najnowszego Delphi 12.1 CE. Idealnie nadaje się do zapisu konfiguracji/prostych danych

Mam jednak pewne obawy co do limitu plików INI (jeśli takowe obecnie są):

  1. Objętościowego (ponoć cały plik może mieć max. 64kb) - to raczej na pewno już nieprawda
  2. Znakowego dla linii (ponoć 1024 znaki)

Ale, to chyba informacje stare (z czasów Windows 9x). Jak to jest dzisiaj?
Czy może być tak, że Delphi współczesne ma tę implementację własną, nowoczesną - bez limitów?
Gdzie można znaleźć pewną informację? A może ktoś z was wie (przypomnę, że chodzi mi o implementację z najnowszego Delphi)?
Ciekawe jak to jest w Lazarus.

Ps: Owszem, teoretycznie mogę sprawdzić czy plik jest zapisywany/odczytywany - ale jest to trudne i żmudne.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
4

Zajrzałem do źródeł Delphi 11 (nie instalowałem jeszcze 12) i widzę coś takiego:

Kopiuj
function TIniFile.ReadString(const Section, Ident, Default: string): string;
var
  Buffer: array[0..2047] of Char;
begin
                                                                                                                   
  SetString(Result, Buffer, GetPrivateProfileString(MarshaledString(Section),
    MarshaledString(Ident), MarshaledString(Default), Buffer, Length(Buffer),
    MarshaledString(FFileName)));
end;

Więc wygląda na to, że te zaszłości są nie aktualnie nie mniej jednak są limity prawdopodobnie (nie chce mi się sprawdzać reszty) wszystkie zgodne z tym https://stackoverflow.com/a/65870674 .

PD
  • Rejestracja: dni
  • Ostatnio: dni
4

Przetestowałem w Lazarus obsługę plików INI i bez problemu działa z plikami ~500mb oraz liniami po 16mb.

MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
0

Z tego co kojarzę chyba nie ma 'oficjalnego' standardu formatu *.ini więc każdy system/program może to robić po swojemu. Co więcej Microsoft radzi aby używać rejestru systemowego w miejsce pliku ini. Więc nie zdziwiłbym się jakby API Windows'a miały te same limity o których wspominasz @Pepe Wszystko zależy czy w kasie TIniFile są używane funkcje systemowe, czy własne. Jednak z tego co @kAzek wrzucił niestety limity są aktualne.

Tak więc jeśli chcesz zapisywać więcej, pozostaje Ci używanie jakiejś innej klasy bądź napisanie tego samemu. Co nie będzie raczej trudne. Ewentualnie możesz dane zapisywać w rejestrze systemowym jeśli działasz tylko na Windows.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.