|
| Gemme Binaer Array i fil Fra : Kurt |
Dato : 03-05-05 13:30 |
|
Jeg har brug for at gemme et array i en fil.
Hvordan gør man det?
/Kurt
| |
Uffe Kousgaard (03-05-2005)
| Kommentar Fra : Uffe Kousgaard |
Dato : 03-05-05 15:27 |
|
Hvis din koder ser sådan ud:
var
mitarray: array [1..100] of double;
f: file;
begin
assignfile(f,'minfil.xxx');
rewrite(f);
write(f,mitarray);
closefile(f);
end;
Hvis det er et dynamisk array, er du nødt til at lægge en løkke ind, som
skriver hvert element for sig:
for i:= 1 to 100 do write(f,mitarray[i]);
Hvis du nu gør det alligevel med et dynamisk array, hvad sker der så? (Ja,
jeg kender selv svaret.....)
hilsen
Uffe
"Kurt" <kurt_g@guldbaek.net> wrote in message
news:42776ebc$0$312$edfadb0f@dread11.news.tele.dk...
> Jeg har brug for at gemme et array i en fil.
> Hvordan gør man det?
>
> /Kurt
>
>
| |
Kurt (04-05-2005)
| Kommentar Fra : Kurt |
Dato : 04-05-05 06:27 |
|
"Uffe Kousgaard" <oh@no.no> wrote in message
news:42778a54$0$160$edfadb0f@dtext01.news.tele.dk...
> Hvis din koder ser sådan ud:
>
> var
> mitarray: array [1..100] of double;
> f: file;
> begin
> assignfile(f,'minfil.xxx');
> rewrite(f);
> write(f,mitarray);
> closefile(f);
> end;
>
> Hvis det er et dynamisk array, er du nødt til at lægge en løkke ind, som
> skriver hvert element for sig:
>
> for i:= 1 to 100 do write(f,mitarray[i]);
>
> Hvis du nu gør det alligevel med et dynamisk array, hvad sker der så? (Ja,
> jeg kender selv svaret.....)
>
> hilsen
> Uffe
Compileren protesterer mod linien
write(f,mitarray);
med "Incompatible tupes: 'procedure, untyped pointer or untyped parameter'
and 'Array'"
/Kurt
| |
Uffe Kousgaard (04-05-2005)
| Kommentar Fra : Uffe Kousgaard |
Dato : 04-05-05 07:48 |
|
"Kurt" <kurt_g@guldbaek.net> wrote in message
news:42785d2d$0$201$edfadb0f@dread11.news.tele.dk...
> Compileren protesterer mod linien
> write(f,mitarray);
> med "Incompatible tupes: 'procedure, untyped pointer or untyped parameter'
> and 'Array'"
OK, så prøv med følgende:
type
Tarray = array [1..100] of double;
var
mitarray: Tarray;
f: file of Tarray;
(resten som før).
hilsen
Uffe
| |
Kurt Guldbæk (04-05-2005)
| Kommentar Fra : Kurt Guldbæk |
Dato : 04-05-05 23:21 |
|
"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:4278701c$0$186$edfadb0f@dtext01.news.tele.dk...
> "Kurt" <kurt_g@guldbaek.net> wrote in message
> news:42785d2d$0$201$edfadb0f@dread11.news.tele.dk...
>
>> Compileren protesterer mod linien
>> write(f,mitarray);
>> med "Incompatible tupes: 'procedure, untyped pointer or untyped
>> parameter'
>> and 'Array'"
>
> OK, så prøv med følgende:
>
> type
> Tarray = array [1..100] of double;
> var
> mitarray: Tarray;
> f: file of Tarray;
> (resten som før).
>
> hilsen
> Uffe
>
Tak, det hjalp!
/Kurt
| |
Finn Bindeballe (03-05-2005)
| Kommentar Fra : Finn Bindeballe |
Dato : 03-05-05 15:49 |
|
hej
kik i help paa bloackread, og bloackwrite ... lige hvad di skal bruge....
/F
Kurt wrote:
>Jeg har brug for at gemme et array i en fil.
>Hvordan gé·¨ man det?
>
>/Kurt
>
>
>
>
| |
Kurt Guldbæk (03-05-2005)
| Kommentar Fra : Kurt Guldbæk |
Dato : 03-05-05 21:21 |
|
"Finn Bindeballe" <postmaster@127.0.0.1> skrev i en meddelelse
news:42778f78$0$244$edfadb0f@dread11.news.tele.dk...
> hej
>
> kik i help paa bloackread, og bloackwrite ... lige hvad di skal bruge....
>
> /F
>
> Kurt wrote:
>
>>Jeg har brug for at gemme et array i en fil.
>>Hvordan g? man det?
>>
>>/Kurt
>>
>>
>>
Tak for hjælpen til jer begge.
/Kurt
| |
lap[4800] (07-05-2005)
| Kommentar Fra : lap[4800] |
Dato : 07-05-05 06:48 |
|
Hej Kurt
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Load: TButton;
Save: TButton;
Fill: TButton;
procedure SaveClick(Sender: TObject);
procedure LoadClick(Sender: TObject);
procedure FillClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
const
CDoublesFile = 'XDoubles.Bin';
type
ADouble = array of double;
//PADouble = ^ADouble;
var
GlobalArray: ADouble; // Array to be loaded / saved
Procedure SaveArrayToFile (stuff: ADouble; FileName : TFileName);
var
elCount: integer;
i: integer;
myStream: TMemoryStream;
begin
myStream := TMemoryStream.Create;
try
elCount := (High(stuff) - Low(stuff)) + 1;
myStream.Write(elCount, SizeOf(integer));
for i := Low(stuff) to High(stuff) do
myStream.Write(stuff[i], SizeOf(double));
myStream.Seek(0, soFromBeginning);
myStream.SaveToFile(FileName);
finally
myStream.Free;
end;
end;
Procedure LoadArrayFromFile (stuff: ADouble; FileName : TFileName);
var
elCount: integer;
i: integer;
myStream: TMemoryStream;
begin
// Read back, in a dynamic array.
if not FileExists(FileName) then
exit;
myStream := TMemoryStream.Create;
try
myStream.LoadFromFile(FileName);
myStream.Read(elCount, SizeOf(integer));
if elCount > 0 then
begin
SetLength(stuff, elCount);
for i := Low(stuff) to High(stuff) do
myStream.Read(stuff[i], SizeOf(double));
end;
finally
myStream.Free;
end;
end;
procedure TForm1.SaveClick(Sender: TObject);
begin
SaveArrayToFile (GlobalArray, CDoublesFile);
end;
procedure TForm1.LoadClick(Sender: TObject);
var
i : Integer;
begin
LoadArrayFromFile (GlobalArray, CDoublesFile);
//Display GlobalArray
ListBox1.Clear;
for i := Low(GlobalArray) to High(GlobalArray) do
ListBox1.Items.Add(Format('%f', [GlobalArray[i]]));
end;
procedure TForm1.FillClick(Sender: TObject);
var
i : Integer;
begin
SetLength(GlobalArray,12); //Add space for 12 elements
// Fill "GlobalArray" with stuff.
for i := Low(GlobalArray) to High(GlobalArray) do
GlobalArray[i] := Random(High(GlobalArray)) / 42.;
end;
initialization
Randomize;
end.
Mvh. lap[4800]
"Kurt" <kurt_g@guldbaek.net> skrev i en meddelelse
news:42776ebc$0$312$edfadb0f@dread11.news.tele.dk...
> Jeg har brug for at gemme et array i en fil.
> Hvordan gør man det?
>
> /Kurt
>
>
| |
|
|