Witam, czytałem wiele informacji na temat problemu z BlockWrite i błędem I/O Error 1784, lecz w dalszym ciągu nie mogę dojść do przyczyny. Może ktoś mi pomoże?
function TfrmGlowna.ZapiszPlik(sciezka: string): integer;
var
temp, puste: TPamietaj;
tempfile: PamietajFile;
i, c: integer;
begin
if FileExists(sciezka) then
begin
if MessageDlg('Ten plik istnieje! Czy chcesz go nadpisać?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then
begin
result := 2;
exit;
end;
end;
OtwartyPath := sciezka;
INIOtw.WriteString('Dane', 'Plik', sciezka);
if FileExists(sciezka) then
DeleteFile(sciezka);
AssignFile(tempfile, sciezka);
Rewrite(tempfile);
c := htlbZdarzenia.Items.Count - 1;
for i := 0 to c do
begin
temp.Nazwa := INInaz.ReadString('Dane', IntToStr(i), '');
temp.DataUtworzenia := INIdut.ReadDateTime('Dane', IntToStr(i), 0);
temp.Przez := INIprz.ReadString('Dane', IntToStr(i), '');
temp.Szczegoly := INIszc.ReadString('Dane', IntToStr(i), '');
temp.Przypomnienie := INIpzy.ReadDateTime('Dane', IntToStr(i), 0);
temp.PowtarzanieTN := INIpow.ReadBool('Dane', IntToStr(i), false);
temp.PowtarzanieMGDMR := INIpom.ReadInteger('Dane', IntToStr(i), 0);
temp.PowtarzanieIle := INIpoi.ReadInteger('Dane', IntToStr(i), 0);
temp.PowtarzanieRaz := INIpor.ReadBool('Dane', IntToStr(i), false);
temp.Akcja := INIakc.ReadInteger('Dane', IntToStr(i), 0);
temp.DzwiekTN := INIdzw.ReadBool('Dane', IntToStr(i), false);
temp.DzwiekPath := INIdzp.ReadString('Dane', IntToStr(i), '');
temp.ApplikacjaTN := INIapp.ReadBool('Dane', IntToStr(i), false);
temp.ApplikacjaPath := INIapa.ReadString('Dane', IntToStr(i), '');
temp.ApplikacjaParam := INIapr.ReadString('Dane', IntToStr(i), '');
temp.DymekTN := INIdym.ReadBool('Dane', IntToStr(i), false);
temp.DymekIco := INIdyi.ReadInteger('Dane', IntToStr(i), 0);
temp.DymekTytul := INIdyt.ReadString('Dane', IntToStr(i), '');
temp.DymekInfo := INIdyn.ReadString('Dane', IntToStr(i), '');
BlockWrite(tempfile, temp, SizeOf(temp)-1); //miejsce występowania i/o error 1784
temp := puste;
end;
CloseFile(tempfile);
WyczyscPrawa;
result := 1;
end;
natomiast definicja TPamietaj:
type
TPamietaj = packed record
Nazwa: String[55];
DataUtworzenia: TDateTime;
Przez: String[100];
Szczegoly: String[255];
Przypomnienie: TDateTime;
PowtarzanieTN: boolean;
PowtarzanieMGDMR: integer;
PowtarzanieIle: integer;
PowtarzanieRaz: boolean;
Akcja: integer;
DzwiekTN: boolean;
DzwiekPath: String[255];
ApplikacjaTN: boolean;
ApplikacjaPath: String[255];
ApplikacjaParam: String[255];
DymekTN: boolean;
DymekIco: integer;
DymekTytul: String[255];
DymekInfo: String[255];
end;
Proszę o pomoc...