/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
FileWrite procedure
Fra : Michael Vilhelmsen


Dato : 15-10-03 14:30

Hej

Jeg har lavet et ganske lille program, som kun har en knap.
OnClick på denne er:

procedure TForm1.Button1Click(Sender: TObject);
type
TmpRec = Packed Record
Art : Byte;
Dato : String[8];
Konto : String[10];
Belob : Real48;
Navn : String[20];
KasseNr : Byte;
BonNr : Integer;
Unused : Packed Array [1..24] Of Byte;
End; {Rec TmpRec}
var
FilHandle : INteger;
TmpInt : Integer;
FRec : tmprec;
begin
FillChar(FRec,SizeOf(FRec),#00); //Initializing

if (FileExists('E:\Gemmes\F001.OCD')) then
FilHandle := FileOpen('E:\Gemmes\F001.OCD',fmShareDenyNone) // Open
existing file
else
FilHandle := FileCreate('E:\Gemmes\F001.OCD'); // Create new file.
if (FilHandle>0) then // if open / create OK
begin
FRec.Art := FilHandle;
FRec.Dato := '20031015';
FRec.Konto := 'Michael';
FRec.Belob := 99.95;
FRec.Navn := 'Some information';
FRec.KasseNr := 1;
FRec.BonNr := 4587;
tmpInt := FileSeek(FilHandle,0,2);
if (tmpInt<>-1) then
begin
TmpInt := FileWrite(FilHandle,FRec,SizeOf(FRec));
if (not (TmpInt=SizeOf(FRec))) then
begin
ShowMessage('Could not write to file ');
end
else
begin

end;
end
else
begin
ShowMessage('Unable to seek into file ');
end;

FileClose(FilHandle);
end
else
begin
ShowMessage('Unable to open / create file ');
end;
end;


Når filen IKKE findes virker det.
Når filen findes, returnere FileWrite -1.

Nogen der ved hvorfor (eller hvad jeg gør forkert).

--
Best Regards / Med venlig hilsen
Michael Vilhelmsen



 
 
Jakob (16-10-2003)
Kommentar
Fra : Jakob


Dato : 16-10-03 09:57

Prøv at bruge AssignFile i stedet for FileOpen.

Fra Delphi hjælpen:

Use of the non-native Pascal file handlers such as FileOpen is not
encouraged. These routines map to system routines and return OS file
handles, not normal Pascal file variables. These are low-level file access
routines. For normal file operations use AssignFile, Rewrite, and Reset
instead.


Jakob Lanstorp
http://www.lanstorp.com

----- Original Message -----
From: "Michael Vilhelmsen" <Mivi@SHOULD.BE.REMOVED.Hunderupnet.dk>
Newsgroups: dk.edb.programmering.pascal
Sent: Wednesday, October 15, 2003 3:29 PM
Subject: FileWrite procedure


> Hej
>
> Jeg har lavet et ganske lille program, som kun har en knap.
> OnClick på denne er:
>
> procedure TForm1.Button1Click(Sender: TObject);
> type
> TmpRec = Packed Record
> Art : Byte;
> Dato : String[8];
> Konto : String[10];
> Belob : Real48;
> Navn : String[20];
> KasseNr : Byte;
> BonNr : Integer;
> Unused : Packed Array [1..24] Of Byte;
> End; {Rec TmpRec}
> var
> FilHandle : INteger;
> TmpInt : Integer;
> FRec : tmprec;
> begin
> FillChar(FRec,SizeOf(FRec),#00); //Initializing
>
> if (FileExists('E:\Gemmes\F001.OCD')) then
> FilHandle := FileOpen('E:\Gemmes\F001.OCD',fmShareDenyNone) // Open
> existing file
> else
> FilHandle := FileCreate('E:\Gemmes\F001.OCD'); // Create new file.
> if (FilHandle>0) then // if open / create OK
> begin
> FRec.Art := FilHandle;
> FRec.Dato := '20031015';
> FRec.Konto := 'Michael';
> FRec.Belob := 99.95;
> FRec.Navn := 'Some information';
> FRec.KasseNr := 1;
> FRec.BonNr := 4587;
> tmpInt := FileSeek(FilHandle,0,2);
> if (tmpInt<>-1) then
> begin
> TmpInt := FileWrite(FilHandle,FRec,SizeOf(FRec));
> if (not (TmpInt=SizeOf(FRec))) then
> begin
> ShowMessage('Could not write to file ');
> end
> else
> begin
>
> end;
> end
> else
> begin
> ShowMessage('Unable to seek into file ');
> end;
>
> FileClose(FilHandle);
> end
> else
> begin
> ShowMessage('Unable to open / create file ');
> end;
> end;
>
>
> Når filen IKKE findes virker det.
> Når filen findes, returnere FileWrite -1.
>
> Nogen der ved hvorfor (eller hvad jeg gør forkert).
>
> --
> Best Regards / Med venlig hilsen
> Michael Vilhelmsen
>
>



Michael Vilhelmsen (16-10-2003)
Kommentar
Fra : Michael Vilhelmsen


Dato : 16-10-03 10:28

Ja, det har jeg set.

Men jeg syntes faktisk at de der FileOpen rutiner er ganske nemme at bruge.
Og jeg har fundet ud af, at man til FileOpen kan overføre mere end ét flag.
Det løste problemet.

Michael

"Jakob" <lanstorp@hotmail.com> skrev i en meddelelse
news:_3tjb.7538$jf4.465137@news000.worldonline.dk...
> Prøv at bruge AssignFile i stedet for FileOpen.
>
> Fra Delphi hjælpen:
>
> Use of the non-native Pascal file handlers such as FileOpen is not
> encouraged. These routines map to system routines and return OS file
> handles, not normal Pascal file variables. These are low-level file access
> routines. For normal file operations use AssignFile, Rewrite, and Reset
> instead.
>
>
> Jakob Lanstorp
> http://www.lanstorp.com
>
> ----- Original Message -----
> From: "Michael Vilhelmsen" <Mivi@SHOULD.BE.REMOVED.Hunderupnet.dk>
> Newsgroups: dk.edb.programmering.pascal
> Sent: Wednesday, October 15, 2003 3:29 PM
> Subject: FileWrite procedure
>
>
> > Hej
> >
> > Jeg har lavet et ganske lille program, som kun har en knap.
> > OnClick på denne er:
> >
> > procedure TForm1.Button1Click(Sender: TObject);
> > type
> > TmpRec = Packed Record
> > Art : Byte;
> > Dato : String[8];
> > Konto : String[10];
> > Belob : Real48;
> > Navn : String[20];
> > KasseNr : Byte;
> > BonNr : Integer;
> > Unused : Packed Array [1..24] Of Byte;
> > End; {Rec TmpRec}
> > var
> > FilHandle : INteger;
> > TmpInt : Integer;
> > FRec : tmprec;
> > begin
> > FillChar(FRec,SizeOf(FRec),#00); //Initializing
> >
> > if (FileExists('E:\Gemmes\F001.OCD')) then
> > FilHandle := FileOpen('E:\Gemmes\F001.OCD',fmShareDenyNone) // Open
> > existing file
> > else
> > FilHandle := FileCreate('E:\Gemmes\F001.OCD'); // Create new file.
> > if (FilHandle>0) then // if open / create OK
> > begin
> > FRec.Art := FilHandle;
> > FRec.Dato := '20031015';
> > FRec.Konto := 'Michael';
> > FRec.Belob := 99.95;
> > FRec.Navn := 'Some information';
> > FRec.KasseNr := 1;
> > FRec.BonNr := 4587;
> > tmpInt := FileSeek(FilHandle,0,2);
> > if (tmpInt<>-1) then
> > begin
> > TmpInt := FileWrite(FilHandle,FRec,SizeOf(FRec));
> > if (not (TmpInt=SizeOf(FRec))) then
> > begin
> > ShowMessage('Could not write to file ');
> > end
> > else
> > begin
> >
> > end;
> > end
> > else
> > begin
> > ShowMessage('Unable to seek into file ');
> > end;
> >
> > FileClose(FilHandle);
> > end
> > else
> > begin
> > ShowMessage('Unable to open / create file ');
> > end;
> > end;
> >
> >
> > Når filen IKKE findes virker det.
> > Når filen findes, returnere FileWrite -1.
> >
> > Nogen der ved hvorfor (eller hvad jeg gør forkert).
> >
> > --
> > Best Regards / Med venlig hilsen
> > Michael Vilhelmsen
> >
> >
>
>



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste