Re: pascal - binarni soubor

From: Martin Sznapka (bigmartin@centrum.cz)
Date: 10. 08. 2002, 12:22 CEST


> Hmm, tys to zjevne nepochopil. File of string je proste
> jen standardni typovy soubor, cili soubor zaznamu o pevne
> delce, respektive delce odpovidajici pouzitemu typu. Obecne
> tedy file of <type> kde type je nejaka datova struktura
> (o pevne delce). Je lhostejne, jde-li o nejakou standardni
> strukturu jako treba string, nebo explicitne definovany
> typ. A jelikoz typ string ma v Pascalu implicitne delku
> 256 bytes, je soubor tvoren prave zaznamy o delce 256 bytes,
> kde byte 0 obsahuje 'vyuzitou' delku stringu a zbyle bytes
> 1..255 pak obsahuji text (o delce byte 0) a evtl. zbyla
> 'prazdna' mista (do delky typu string).

no asi se nechapeme navzajem :)
tohle vsechno vim
jedina pro me dulezita vec je prave ta "pevna delka"
chci zapisovat do "file of string" kde ten string by byl neco jako
string[length(string)] :)
vim ze je to blbost ale proto se ptam tady v konfere - zkusenejsich lidi
zda neco takove nejde

a pokud to opravdu nejde staci odpovedet "NEJDE TO"

>
> Pokud by ti vadila jen zbytecna delka implicitniho stringu,
> kterou v konkretnim pripade nikdy nevyuzijes, deklaruj si
> typ stringu o potrebne delce a na tomto typu pak postav ten
> soubor (str64:string[64]; .... f:file of str64;  ...)

ano ale ja budu do toho file of string ukladat stringy "promenlive delky" -
tedy jednou je to legnth(s)=5 a jindy 100 - proto ten <priklad> s jinou
delkou stringu

>
> Jinak nevidim duvod, proc nepouzit textfile, chces-li jenom
> ukladat text, respektive obsah stringu. Nic ti prece nebrani
> potom k tomu souboru pristupovat jako k netypovemu, nebo
> treba file of bytes (char).

ja ho vidim :)
F : text je ta druha moznost hned po F : file of string
 - jedina vyhoda toho file of string je ta ze se budou jednoduseji nacitat
data z tohoto souboru (tedy i rychleji - a to pri velkem objemu dat je uz
"znat") nez z toho textoveho (kde se to musi nacitat po pismenech)
 - no a jedina jeho nevyhoda je ta ze jeho velikost je nekolikanasobne vetsi
nez toho F : text - prave o "256-length(string)" na kazdy string

a prave tuhle jeho nevyhodu se snazim v tehle konferenci vyresit - ale asi
bezuspesne - takze vyhraje zrejme ten F : text!

[a netypovy soubor se mi jevi daleko slozitejsi nez ten textovy]

>
> Nemuzes-li z nejakeho duvodu pouzit textfile a ukladat do
> zcela obecneho souboru vzdycky pouze onu 'vyuzitou' delku
> stringu, pouzij netypovy 'binarni' soubor a data ze stringu
> do nej zapisuj cyklem pres string. Budes pak ale mit potize
> se ctenim takoveho souboru, pokud nebudes vkladane stringy
> oddelovat napriklad crlf (cimz vzniknou radky a soubor se
> bude chovat jako textfile). Taky muzes ukladat stringy
> vcetne byte 0 (delka) a na cteni takoveho souboru si napises
> fci, ktera bude tuto strukturu predpokladat a bude moci
> cist jednotlive stringy budto ciste sekvencne, nebo 'jakoby'
> primym pristupem k n-temu stringu. Jakoby, protoze interne
> se bude zase muset k n-temu stringu prokousat sekvencne
> podle delek, pocinaje byte 0.

[moc slozite]

>
> Taky existuje moznost pouzit (tusim od verze TP 7) strukturu
> stringu tzv. zero-terminated strings, podobne jako je tomu
> treba v C. Jejich support je mozno nastavit v compileru, ale
> blizsi podrobnosti RTFM :), protoze jsem to v dobach Pascalu
> nepouzival a nevim, jak je to v TP implementovane.
>

hura! - ze by konecne neco :)
zkusim se po tom pokouknout!

> pako Paco.

jinak diky za reakce - kdybych nenasel "zero-terminated strings" tak nezbyva
moznost F : text!

diky
martin



This archive was generated by hypermail 2.1.2 : 10. 08. 2002, 14:51 CEST