Lese og skrive en fil til og fra en string

Denne artikkelen inroduces to praktiske funksjoner for å lese innlasting av en fil i en streng og skrive en streng til en file.Reading en fil til en stringPerhaps den enkleste måten å lese en fil til en streng bruker LoadFromFile metoden for en TStringList objekt og deretter få tilgang til sin Text eiendom: bruker
SysUtils, klasser; -funksjonen
LoadFile ( konst
Filename: TFileName): string
; begynne
med
TStringList.Create
i prøve
LoadFromFile (Filename); Resultat: = Tekst; endelig Kanal Gratis; slutten
; slutten
, Men dette er måten å gjøre ting ineffektiv, siden LoadFromFile laster fil og analyserer det å skille linjene, og deretter når vi bruker tekst eiendom, er en intern metode som kalles for å produsere en streng sammenføyning linjene, så denne doble jobben er gjort for ingenting, pluss vi ender opp med å bruke mer enn det dobbelte av minne lagring vi faktisk trenger (inntil vi frigjøre TStringList objekt) .En bedre Waya bedre tilnærming kan være å bruke en TFileStream objekt (eller den gamle Tildel, Reset, Les og Lukk prosedyrer) for å direkte lese innholdet i en fil inn i en streng. Her er den samme funksjon med TFileStream som returnerer innholdet av filen hvis navn sendes som parameter: bruker
SysUtils, klasser; -funksjonen
LoadFile ( konst
Filename: TFileName): string
; begynne
med
TFileStream.Create (Filename, fmOpenRead eller
fmShareDenyWrite) ikke begynne
prøve
SetLength (Resultat, Size ); Les plakater (Pointer (resultater) ^, Stream.Size); unntatt
Resultat: = ''; //Deallokerer minne Free; øke
; slutten
; Gratis; slutten
; slutten
, skrive en fil fra en stringIf vi trengte å lagre innholdet i strengen tilbake til disk, kan vi bruke følgende fremgangsmåte: bruker
SysUtils, klasser; prosedyre
savefile ( konst
Filename: TFileName; konst
innhold: string
); begynne
med
TFileStream.Create (Filename, fmCreate)
i prøve
Skriv plakater (Pointer (innhold) ^, lengde (innhold)); endelig Kanal Gratis; slutten
; slutten
;