10. februar 2003 - 16:45Der er
3 kommentarer og 2 løsninger
Append til file of record
Hej,
Er det muligt at appende en ny array of records til en file of records (De to records er af samme type). Jeg kunne forestille mig at det skulle værre muligt at flytte file pointeren til filens slutning også ellers bruge write som normalt. Er der nogen der har et lille eksemple?
Hvorfor er der ikke flere, der lykkes med Agentic AI? Fordi de mangler at håndtere mellemregningerne fra POC til storskalaløsning.
Slettet bruger
10. februar 2003 - 21:39#1
Du kan gøre sådan
Assignfile(Fil,Navn); Reset(Fil) Seek(Fil, FileSize(Fil)); Tal:=0; Repeat Write(Fil,RecArray[Tal]); Tal:=Tal+1; Until Length(RecArray)=Tal
Eller vis du bruger et statisk array så kan du gåre sådan Assignfile(Fil,Navn); Reset(Fil) Seek(Fil, FileSize(Fil)); Tal:=0; BlockWrite(Fil,RecArray[Tal]);
Det krever dog at filen er oprettet som File og ikke som File Of
Mvh. Simon
Synes godt om
Slettet bruger
10. februar 2003 - 21:45#2
Fejl I andet eksempel
Reset(Fil); Skulle være Reset(Fil,SizeOf(Rec));
BlockWrite(Fil,RecArray[Tal]); skulle være BlockWrite(Fil,RecArray[Tal],Length(RecArray));
Når du arbejder med random access files (sådan som du vil), kan man faktisk skrive til filen selvom den er åbnet med reset. Et lille eksempel med en record (indeholdende en char).
Lav en tekstfil som indeholder 'abcdefg' og prøv at køre følgende:
type r= record c: char; end;
procedure TForm1.Button1Click(Sender: TObject); var f: file of r; size : Longint; S: string; y: integer; q: r; begin if OpenDialog1.Execute then begin AssignFile(f, OpenDialog1.FileName); Reset(f); size := FileSize(f); S := 'File size in bytes: ' + IntToStr(size); y := 10; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5; S := 'Seeking halfway into file...'; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2); S := 'Position is now ' + IntToStr(FilePos(f)); Canvas.TextOut(5, y, S); q.c := 'z'; {ændrer midterste tegn til z} write(f,q);
seek (f, size); {finder slutningen af filen} q.c := 'w'; write(f,q); {tilføjer et w} CloseFile(f); end; end;
Nu vil din fil indeholde: 'abczefgw' (altså midterste tegn ændret til z og et w tilføjet. Du kan naturligvis bruge filer med alle andre slags records. Det her er bare et eksempel.
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.