[Delphi] Pliki typowane! Help my arse... !! :) [Błąd

0

Witajcie!
Mam sobie kawałek bardzo mądrego :) kodu:
{...}
MkDir(ExtractFilePath(Application.ExeName) + 'BGCH');
CopyFile(PChar(ExtractFilePath(Application.ExeName) + 'body.dat'), PChar(ExtractFilePath(Application.ExeName) + 'BGCH\body.dat'), True);
AssignFile(VFile, ExtractFilePath(Application.ExeName) + 'body.dat');
Application.ProcessMessages;
{zmienna VFile jest typu file of {jakiś rekord, móg to jest taki:
type Yak = packed record
First : String[200];
Second : String[200];
end;}}
I teraz pytanko: Dlaczego program się na mnie wypina i pokazuje komunikat I/O 183, po przejechaniu przez ten kod?? Dodam iż jeżeli nie ma polecenia MkDir(...) i CopyFile(...) to program działa bezbłędnie. Bardzo bym prosił o podpowiedzi. (Jest to kawałek mojego nowego programika, może być ewentualnie bez tego MkDir, i FileCopy, ale wolałbym z... :) ).
Pa

--
"Jeżeli myślisz że jest dobrze... kompletnie się mylisz"
www.PAST-SKRIPTUM.prv.pl

0

Zobacz sobie na artykuł Dryobates'a: "typy danych - systematyka"
Gdzieś pod koniec jest o plikach typowanych.

--
Ciasnota umysłowa się rozszerza

0

W Delphi tajemnicze kody przy operacjach plikowych (szczegolnie Reset/Rewrite) najczesciej pochodza ze "spadku" po poprzednich operacjach. W Twoim wypadku MkDir probuje utworzyc juz istniejacy katalog i powstaje blad 183 (ERROR_ALREADY_EXISTS) ktory jednak nie jest zglaszany. Delphi zauwaza go dopiero przy Reset. Dzialajacy kod:
[code]
var
VFile : File of Yak;
Path : string;

begin
Path:=ExtractFilePath(Application.ExeName);
if not DirectoryExists(Path+ 'BGCH') then
MkDir(Path + 'BGCH');
CopyFile(PChar(Path + 'kalkulator.rar'),
PChar(Path + 'BGCH\kalkulator.rar'), True);
AssignFile(VFile, Path + 'BGCH\kalkulator.rar');
Reset(VFile);
Application.ProcessMessages;
CloseFile(VFile);
end;[/code]

jak widac, pozwolilem sobie wrzucic sciezke do zmiennej by uniknac wielokrotnego wywolywania funkcji ExtractFilePath.

--
Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

1 użytkowników online, w tym zalogowanych: 0, gości: 1