Hallo,
ich habe ein Programm erstellt, dass ein Datum einliest und auf Wunsch des Benutzers in amerikanischem oder europäischen Format ausgibt. Es funktioniert zwar, aber wenn das Programm geschlossen wird, erscheint eine Fehlermeldung.
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
tDatum = class
tag, monat, jahr : integer;
procedure drucke(pcheck:string);
procedure setze(ptag, pmonat, pjahr: integer);
procedure loeschen;
//function xmascheck():boolean;
function datumcheck():boolean;
end; // of class
//Implementation-----------------------------------------------------
procedure tDatum.loeschen;
begin
Tag := 0;
Monat := 0;
Jahr := 0;
end;
procedure tDatum.drucke(pcheck:string);
begin
if datumcheck() then
begin
if pcheck = 'E' then
writeln(tag,'.',monat,'.',jahr)
else
if pcheck = 'A' then
writeln(monat,'/',tag,'/',jahr)
end
else writeln('ERROR');
end;
//function tDatum.xmascheck() : boolean;
//begin
//if (tag = 24) AND (monat = 12) then
//result := true
//else
//result := false;
//end;
Function tdatum.datumcheck(): boolean;
Begin
If (tag in [1..31]) AND (monat in [1..12]) then
Result := true
else
Result := false
End;
procedure tDatum.setze(ptag, pmonat, pjahr: integer);
begin
if datumcheck() then
begin
tag := ptag;
monat := pmonat;
jahr := pjahr;
end
end;
var
heute: tDatum;
check : string;
begin // Hauptprogramm -------
heute.loeschen;
write('Tag: '); readln(heute.tag);
write('Monat: '); readln(heute.monat);
write('Jahr: '); readln(heute.jahr);
heute.setze(heute.tag,heute.monat,heute.jahr);
writeln;
writeln('Amerikanisch (A) oder Europaeisch (E)?');
readln(check);
heute.drucke(check);
readln;
end.
Die Fehlermeldung: "In Projekt C:\<...> \Project1.exe trat ein folgendes Problem mit folgender Meldung auf: '
access violation at 0x7c93a3a2: read of adress 0x000007ea.'. Prozess angehalten. Mit Einzelne Anweisungen oder Start fortsetzen."
Es öffnet sich ein Fenster mit der Überschrift CPU und eine Zeile ist markiert:
7C93A9A2 8B02 mov eax,[edx]
Kann jemand den Grund erkennen?
Gruß