AssignFile 을 사용해서 연결하는 과정입니다.
델파이 2에서 만들었던 소스를 델파이 5에서 사용하고자 하는데
에러가 발생하는 군요.
델파이 5에서 다음 과정에 문제가 있는지 봐 주십시오.
TYPE
record = TXY
A1, A2, A3: Integer;
X, Y: Double;
end;
procedure RRead;
var
AD: PChar;
AM, AN: Integer;
FoT: File of TXY;
begin
// C폴더에 있는 C의 Data폴더에 있는 Point.dat파일(TXY 타입)을 연결해서 AD메모리에 넣는다.
AssignFile(FoT, 'C:DataPoint.Dat');
ReSet(FoT);
AM := FileSize(SS);
AN := AM - 1;
AD := AllocMem(AM * Sizeof(TXY));
BlockWrite(FoT, AD^, AN+1);
CloseFile(FoT);
end;
디버깅할때, 커서를 AssignFile(); 라인 끝에 가져가면 'Inaccessible value'라는
툴팁 메세지가 나옵니다.
레코드로 선언한 타입은 AssignFile을 사용할 수 없는 건가요?
고수님들의 한 수 지도 부탁 드립니다.
여기에 세번째 올리는 건데 아무도 대답을 안 해 주시는군요.
델파이 5를 전혀 사용하지 못하고 하드의 공간만 차지 하고 있습니다.
AM := filesize(FoT); 를 잘못 친거구요?
그것은 당연한거구요.. 리턴값을 표시할수 없을때 나오는 메세지입니다.
<-- 당연히 사용하실수 있습니다.
델파이 5에서 님의 소스를 그래로 복사해서 해보니까 문제없는데요..
근데... 로직자체가 이상하네요...
메모리를 할당해서.. 그것을 기냥 파일에다가 엎어 쓰는건가여?
아래 소스
----------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TXY = record
A1, A2, A3: Integer;
X, Y: Double;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure rRead;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.RRead;
var
AD: PChar;
AM, AN: Integer;
FoT: File of TXY;
begin
// C폴더에 있는 C의 Data폴더에 있는 Point.dat파일(TXY 타입)을 연결해서 AD메모리에 넣는다.
AssignFile(FoT, 'c:aa.Dat');
ReSet(FoT);
AM := FileSize(fot); <-- 여기서는 레코드의 개수를 리턴하더군요 ^^
AN := AM - 1;
AD := AllocMem(AM * Sizeof(TXY));
BlockWrite(FoT, AD^, AN+1);
CloseFile(FoT);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RRead;
end;
end.
이렇게 해보니 aa.dat
--------------------------
dfdasfdfdasf
aaa
로서 이상없이 동작했습니다....
그러니까.. 님께서는 Syntax-Error 하고..알고리즘이 이상한거 같아여~
참고가 되었기를~~~