Run-Time error 202

Für Installationen unter MacOS u.a. Betriebssystemen
Antworten
mattmarr
Beiträge: 4
Registriert: Di 8. Mai 2007, 17:00
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Run-Time error 202

Beitrag von mattmarr »

Hallo!

Habe ein einfaches Programm mit der aktuellen Lazarus(v0.9.22) unter Windows XP-Home erstellt. Dieses Programm enthält in dem Fenster(TForm1) zwei Buttons.
Ein Button der sein Text(Caption) ändert was auch funktioniert.
Und einen weiteren Button der das Programm mit "Close;" beenden soll. Klicke ich auf diesen bekomme ich folgende Fehlermeldung:

Unknown Run-Time error: 202.

Press Ok to ignore an risk data corruption.
Press Cancel to kill the Programm.
Drücke ich "Ok" passiert nix und das Programm läuft weiter. Klicke ich danach erneut auf den Beenden Button schliest das Programm ganz normal.

Nun meine Frage:
Wie kommt diese Fehlermeldung zustande oder mach ich da noch was Falsch?

Habe als Ereignis "OnClick" auf den Beenden Button folgenden Code:

Code: Alles auswählen

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

Würde mich freuen wenn es für mein Problem ein Lösung gibt.


Gruss
Matthias

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Also an dem Close des Buttons kann es eigentlich nicht liegen.

Machst du sonst noch was im Quelltext, bzw. am besten zeigst du mal die ganze Unit ;)
Johannes

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Hallo Matthias!

Möglicherweise liegt der Fehler im Debugger.

Kommt er denn auch, wenn du das EXE-Programm nicht aus Lazarus heraus startest?

Gruß, Alexander

mattmarr
Beiträge: 4
Registriert: Di 8. Mai 2007, 17:00
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von mattmarr »

Hallo Johannes!

Hier mal die komplette unit1.pas:

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{ TForm1 }
 
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  Close;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption:= 'Hallo';
end;
 
initialization
  {$I unit1.lrs}
 
end.

Gruss
Matthias

mattmarr
Beiträge: 4
Registriert: Di 8. Mai 2007, 17:00
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von mattmarr »

Hallo Alexander!
Euklid hat geschrieben:Kommt er denn auch, wenn du das EXE-Programm nicht aus Lazarus heraus startest?
Ja, der Fehler kommt auch wenn ich die EXE driket aus dem Verzeichniss starte.


Gruss
Matthias

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Das Problem liegt in deinem FormClose-Ereignis.

Code: Alles auswählen

procedure TForm1.FormClose%u28Sender%u3a TObject; var CloseAction%u3a TCloseAction%u29;
begin
//  Close;
end;
^das wird ja nur aufgerufen, wenn das Formular geschlossen wird. In sofern ist das Close darin die Fehlerquelle, weil das Formular ja nicht zweimal geclost werden kann. Also einfach das Close rausnehmen und es müsste problemlos laufen.

FormClose dient ja dazu, bestimmt Aktionen beim beenden durchzuführen, beispielsweise Speichern der Arbeit, beenden aktiver Verbindungen u.ä. Ein Close macht dort keinen Sinn, weil es sich ja letztlich selbst aufrufen müsste. In deinem Beispiel ist die FormClose-Procedure also gänzlich überflüssig.
Johannes

mattmarr
Beiträge: 4
Registriert: Di 8. Mai 2007, 17:00
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von mattmarr »

Hallo!

Danke für eure Hilfe.

Jetzt klappt es wie es soll.



Gruss
Matthias

Antworten