2011-09-23 2 views
1

현미경 사용법을 기록하는 응용 프로그램을 작성하고 있지만 다음 코드는 E2010 호환되지 않는 "WideString"및 "TDataFile"형식의 줄을 읽습니다. SetLength Items, FileSize (F)); 문제를 FileSize (F)로 좁히고, 숫자 대신 오류가없고 i : = fileSize (F)를 할당하려고 시도합니다. 여기서 정수는 같은 오류를 나타냅니다.Delphi 2010에서 FileSize (F)를 사용할 때의 오류

type 
    TData = record 
    Status : integer; // 0=operational 1=maintenance 2=fault 
    OperatorName : string[255]; 
    Client : string[255]; 
    Specimen : string[255]; 
    Memo : string[255]; 
    TEM : TTEM; 
    SEM : TSEM; 
    FIB : TFIB; 
    StartTime : string[22]; // YYYY/MM/DD HH:MM:SS AM 
    FinishTime : string[22]; 
    DataFileName : string[255]; 
    end; 

    TDataFile = File of TData; 

    TDataArray = array of TData 

function LoadAllData(FileName: string; var Items: TDataArray):boolean; 
// Loads contents of Datafile into Items and returns true if successful else false 
var 
    F : TDataFile; 
    i : integer; 
begin 
    AssignFile(F, FileName); 
    try 
    try 
     Reset(F); 
     SetLength(Items, FileSize(F)); // This is the problem line 
     for i := 0 to High(Items) do 
     Read(F, Items[i]); 
     LoadAllData := true; 
    except 
     LoadAllData := false; 
    end; 
    finally 
    CloseFile(F); 
    end; 
end; 

내가 Win7에 64 비트에서 델파이 2010을 사용하고있어 이런 일이 왜 사람이 알고 있나요 그냥 테스트하기 위해 작은 콘솔 응용 프로그램을 작성 :.? = 파일 크기 (F)는, ....

문제없이 작동
+0

큰 값을 다시 돌려주는 이유는 무엇입니까? – RBA

+1

'TTEM','TSEM','TFIB'의 선언은 무엇입니까? –

답변

5

당신이 문제를 해결하는 기능 전에 (이 경우 System에) 기능의 장치 이름을 추가, FileSize라는 함수가 다른 장치 또는 코드의 일부에 선언

function FileSize(const f : WideString):integer; 
begin 

// 

end; 

같은이 보인다 이름을 명시 적으로 FileSize 함수를 호출합니다.

SetLength(Items, System.FileSize(F)); 
+0

고마워요! 내가 어떻게 그것을 놓쳤는 지 명확히하지 않는다. 그러나 나는 같은 이름 hahahaha와 함께 또 다른 기능을 가지고 있었다. 내 기능 이름을 변경하고 모든 게 다시 작동 – user961260

+1

+1, 심령 힘 :-) –

관련 문제