Ich bin neu in Delphi und Programmierung im Allgemeinen. Ich habe ein Problem, dass, wenn ich die folgende DLL-Prozedur kompiliere und laufe, ich einen I/O-Fehler 998 bekomme. Könntest du bitte darauf hinweisen, was ich falsch mache, während ich die geringste Menge von Änderungen an meinem Code mache? Soweit ich das beurteilen kann, muss es ein Problem mit der Art sein, wie ich meine Dateien handhabe.Delphi Fehler: I/O Fehler 998
Die Idee dieses Verfahrens, um Daten von der VCL-Anwendung mit der DLL zu akzeptieren, speichern Sie es in einen Datensatz und speichern Sie den Datensatz dann in eine DAT-Datei.
type
plist = ^game;
tdata = record
nazwa: shortstring;
wydawca: shortstring;
rokwyd: shortstring;
gatunek1: shortstring;
gatunek2: shortstring;
end;
game = record
data: tdata;
pointer: plist;
end;
{$R *.res}
procedure DodajElement (var field1, field2, field3, field4, field5 : shortstring); stdcall;
var
BazaDanych : file of game;
first, current: plist;
begin
AssignFile(BazaDanych, 'BazaDanychGier.dat');
if not FileExists('BazaDanychGier.dat') then
begin
new(first);
first^.data.nazwa := field1;
first^.data.wydawca := field2;
first^.data.rokwyd := field3;
first^.data.gatunek1 := field4;
first^.data.gatunek2 := field5;
first^.pointer := nil;
Rewrite(BazaDanych);
Write(BazaDanych, first^);
CloseFile(BazaDanych);
end
else
begin
Reset(BazaDanych);
Read(BazaDanych, first^);
CloseFile(BazaDanych);
current := first;
new(first);
first^.data.nazwa := field1;
first^.data.wydawca := field2;
first^.data.rokwyd := field3;
first^.data.gatunek1 := field4;
first^.data.gatunek2 := field5;
first^.pointer := current;
Rewrite(BazaDanych);
Write(BazaDanych, first^);
CloseFile(BazaDanych);
end;
end;
Entschuldigung für die fremden Variablennamen.
Welche Linie bewirkt, dass die Ausnahme ausgelöst werden? –
Warum können wir kein [mcve] haben? Dies ist nicht das erste Mal, dass wir diesen Code gesehen haben. Es gibt ziemlich viele Probleme mit dem Code. Ich muss zugeben, ich frage mich, warum Sie nicht debuggen. Warum das? Wäre es nicht einfacher zu lernen, wie man debuggt und in der Lage ist, es selbst zu tun, anstatt andere Leute zu bitten, Fragmente Ihres Codes zu debuggen? Würdest du das nicht gerne selbst sortieren? –
Ja, das würde ich gerne selbst machen können, ich würde hier keine Frage stellen, wenn ich nicht schon alle meine Möglichkeiten ausgeschöpft hätte. Ich bitte um Hilfe, nicht weil ich faul bin, sondern weil ich feststecke. Soweit ich das beurteilen kann, sagt mir der Debugger, dass alles in Ordnung ist. Ich sehe keine Probleme, über die Sie sprechen. –