Hirdetés

Új hozzászólás Aktív témák

  • Drótszamár

    őstag

    válasz Drótszamár #832 üzenetére

    Nem vagy fenn msn-en.

    10.2 Típusos file-ok


    A típusos file-ok alkalmazásával olyan adathalmazokat is létrehozhatunk, melyek sorai azonos típusú (nem kizárólag szöveges) elemeket tartalmaznak. Az ilyen állományok deklarációjában azt kell megadni, hogy a file soraiban tárolt adatok milyen típusúak legyenek. A file típusa lehet egyszerû vagy összetett, de nem lehet file vagy objektum típus. Például:

    var f1:file of integer;
    f2:file of real;

    Azonban gyakrabban használunk összetett típusokat egy file típusaként.
    type tanulotipus=record
    neve:string[25];
    osztalya:string[5];
    atlaga:real;
    end;

    var f_iskola:file of tanulotipus;
    Az f_iskola azonosítóhoz rendelt állomány minden sora egy-egy tanulo rekord lesz, és így az iskola összes tanulójának adatait egyetlen file-ban tárolhatjuk. A file megnyitására a már ismert eljárások használhatók (kivéve Append):

    Reset(f_iskola); {létezõ file}
    Rewrite(f_iskola); {lehet nem létezõ is}

    A szöveges állományoktól eltérõen, a Reset-tel történõ megnyitás után nem csak olvashatunk a file-ban, hanem írhatunk is hozzá. A Rewrite használatával is elvégezhetjük mind a két tevékenységet, de ha már létezõ file-t nyitunk meg így, akkor a tartalma elvész. A file-ba írás (Write, Writeln) ill. az abból való olvasás (Read, Readln) a szöveges állományoknál ismertetett módon történik. A típusos file-okban tetszés szerint mozoghatunk, ehhez a következõ parancsot használjuk:

    Seek(file_valtozo, index);

    A Seek eljárás paramétereként meg kell adni annak az állománynak az azonosítóját, amelyben mozogni akarunk, és annak a sornak a számát, ahová a file-mutatót állítani akarjuk. Fontos tudni, hogy a file elsõ sorának indexe 0, a másodiknak 1, és így tovább. Ahhoz, hogy az indexben megadott sorszám biztosan elérhetõ sort jelöljön, tudnunk kell a file pontos méretét, vagy a file-mutató aktuális helyét.

    FileSize(file_valtozo) {file mérete}
    FilePos(file_valtozo) {aktuális pozíció}

    A FileSize függvény visszatérési értéke egy longint típusú szám, mely a file-ban található sorok száma (az utolsó sor indexe).
    Ha az állomány üres, akkor a függvény értéke 0. A FilePos függvény eredménye egy longint típusú szám, mely a file aktuális sorának indexe. Ha a file-mutató az elsõ sorra mutat, akkor a függvény értéke 0. Ha az aktuális pozíció a file vége, akkor a függvény értéke megegyezik a FileSize függvény értékével. A Seek eljárásban az index helyén is alkalmazhatók ezek a függ- vények.
    Ha az állományunk utolsó soraiban olyan adatok vannak, melyeket törölni akarunk a file-ból, akkor a file végét egy- szerûen levágjuk a Truncate paranccsal:

    Truncate(file_valtozo);

    Az eljárás a file-mutató aktuális pozíciójától csonkolja a file-t, az utolsó sor az aktuális pozíció lesz. Készítsünk egy programot, mely egy már létezõ file-ban keres!

    [link]




    Ezeket kell eltárolni: minden futtatás idejét, a mátrix 12. sorát, és négyzetösszegét.

    Tehát

    type
    matrixsor : array[1..11] of integer;


    egyadat : record
    ora = Byte;
    perc = Byte;
    sor = matrixsor;
    osszeg = Word;
    end;


    var
    f = file of egyadat;
    m = egyadat;
    begin
    ...
    m feltöltése;
    assign(f,'matrix.dat');
    {$I-} reset(f); {$I+}
    If IoResult<>0
    Then
    Begin
    rewrite(f); //nem létezik a file, létrehozod újra
    End;
    seek(f,(filesize(f)-1);
    write(f,m);
    ...
    end.

    [Szerkesztve]

Új hozzászólás Aktív témák