Hvordan kan man omgå 64KB begrænsningen i ini-filer under Win9X?
Jeg har prøvet BigIni og IniFiles32 fra Torry.net, men de afviger desværre fra Delphi's IniFiles på flere vitale punkter. Kan man eventuel bruge en senere version af IniFiles (min applikation er Delphi3 og kan ikke løftes) f.eks. D4, D5 eller fungerer de som D3!? Det optimale ville helt klart være hvis Borland havde lavet en IniFiles.pas der håndterer problemet!!?? Hvis dette ikke er tilfældet, hvad kan man så gøre!!?
Nu ved jeg ikke hvor hardcore du er til delphi, men du kunne evt. lave en selv? Det burde ikke være så svært igen...Lavede engang en del af den, fordi jeg ville have at jeg selv havde lavet ALT i mit program :)
Jeg ved godt at IniFiles ikke er kompliceret som så, men desværre er det lidt et spørgsmål om tid. Desuden kan man ikke lave det uden at indføre en fejl eller to. Det oplevede jeg f.eks. med IniFiles32 hvor jeg rettede flere fejl - til sidst måtte jeg opgive, da det gik for meget ud over test butikkerne :( Min ide med at bruge en senere IniFiles.pas dur altså ikke eller??? Andre forslag???
Hvis du har data i > 64kb størrelsen vil jeg anbefale dig at lave dig eget gemme-format. Det må blive koloenormt sløvt når tekstfiler i den størrelse, skal håndteres.
Hvad med at splitte det op, eller simpelthen streame det til en binær fil i stedet?
Det kan i øvrigt ikke være så svært at lave en effektiv ini-fil-implemtation selv. Du kan enten lave en liste der indeholder sektions-hovederne. Denne liste kunne man sortere og ved hver sektion kunne man have en linie-tæller så man hurtigt kunne komme ned til det rette sted i filen.
Alternativt, som er lynhurtig men optager ram: Læs hele skidtet ind i hukommelsen og leg med det der indtil det skal skrives til disk igen. Her tænker jeg igen på en Header-liste der peger på en data-lister som indeholder data for hver header.
Hvis man ikke bruger de (sløve) varianter betyder det, at man må oprette dataklasser for strenge, heltal, flydende decimaltal, dato, tid, datotid, boolsk
type TValue = class private fData : variant; public constructor Create(const aValueName : string; const aValue : variant); property Name : string read fName; property Value : variant read fData write fData; procedure WriteData(const aFilePointer : textfile); end;
Headers indeholder Headere der indeholder værdier. Bare et alternativ til at skulle lave noget i binære filer. Hvis du kan bruge den idé, så arbejder jeg videre på den i morgen (en sjov lille opgave)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.