Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehlermeldung beim beenden (https://www.delphipraxis.net/32021-fehlermeldung-beim-beenden.html)

Nicodius 17. Okt 2004 14:56


Fehlermeldung beim beenden
 
Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Military.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00438B2C in Modul 'Military.exe'. Lesen von Adresse 00000180'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK  Hilfe  
---------------------------

... ^^ kommt nur wenn ich ein form generiere ... (ich klick auf ein bild - es generiert ein form) wenn ich nicht auf das bild klicke und beende kommt die nachricht nicht ..

Die Muhkuh 17. Okt 2004 14:57

Re: Fehlermeldung beim beenden
 
Wie wärs mit nem bisschen Code?

Meflin 17. Okt 2004 14:57

Re: Fehlermeldung beim beenden
 
tja ohne deinen quelltext werden wir dir da auch nicht weiterhelfen können :roll: ...

Dax 17. Okt 2004 14:58

Re: Fehlermeldung beim beenden
 
Vielleicht solltest du beim verlassen des Programms erstmal alle zur Laufzeit erzeugten Formulare zerstören, womöglich liegt dort der Fehler.

Nicodius 17. Okt 2004 15:19

Re: Fehlermeldung beim beenden
 
hab ich auch schon probiert ...


code

Delphi-Quellcode:
unit Info;

interface

uses Graphics,Forms, Main,
      ExtCtrls, ComCtrls, StdCtrls;

type
  TAusgabe = class
    Text : String;
    Titel : String;
    Bild : String;
    The_Sender : TObject;
  public
    procedure ShowIt(Sender : TObject);
    procedure OnFormClose(Sender: TObject; var Action: TCloseAction);
  end;
implementation

{ TAusgabe }

procedure TAusgabe.OnFormClose(Sender: TObject; var Action: TCloseAction);
begin
  TForm(Sender).Destroy;
end;

procedure TAusgabe.ShowIt;
var Ausgabe_Form : TForm;
    AusgabeLabel : TLabel;
    AusgabeImage : TImage;
begin
  if TImage(Sender) <> nil then
  begin
 
    Ausgabe_Form := TForm.Create(TImage(Sender).Parent);
    Ausgabe_Form.BorderStyle := bsdialog;
    Ausgabe_Form.FormStyle := fsstayontop;
    Ausgabe_Form.Width := 250;
    Ausgabe_Form.Height := 400;
    Ausgabe_Form.Left := Main_Form.Left + TImage(Sender).Left;
    Ausgabe_Form.Top := Main_Form.Top + TImage(Sender).Top + TImage(Sender).Height;
    Ausgabe_Form.Caption := Titel;
    Ausgabe_Form.Visible := true;
    Ausgabe_Form.Parent := TImage(Sender).Parent;

    AusgabeImage := TImage.Create(Ausgabe_Form);
    AusgabeImage.Picture := TImage(Sender).Picture;
    AusgabeImage.AutoSize := true;
    AusgabeImage.Left := (Ausgabe_Form.Width div 2) - (AusgabeImage.Width div 2);
    AusgabeImage.Top := 0;
    AusgabeImage.Visible := true;
    AusgabeImage.Parent := Ausgabe_Form;

    AusgabeLabel := TLabel.Create(Ausgabe_Form);
    AusgabeLabel.Caption := Text;
    AusgabeLabel.Font.Style := [fsbold];
    AusgabeLabel.AutoSize := true;
    AusgabeLabel.WordWrap := true;
    AusgabeLabel.Left := 0;
    AusgabeLabel.Top := AusgabeImage.Height+10;
    AusgabeLabel.Visible := true;
    AusgabeLabel.Parent := Ausgabe_Form;

    Ausgabe_Form.OnClose := OnFormClose;

end;
end;

end.

aufruf

Delphi-Quellcode:
procedure TMain_Form.ImageClick(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var Ausgabe : Info.TAusgabe;
begin
//if TProgressbar(Sender) = nil
//then
//begin
  case button of
    mbleft : begin
               Ausgabe.Titel := TImage(Sender).Hint;
               Ausgabe.Text := 'TEST';
               Ausgabe.ShowIt(Sender);
             end;
    mbmiddle : Showmessage('Mittlere');
    mbright : If Auftrag < 1 then
              begin
              MSender := Sender;
                if TImage(Sender).Hint = 'unbebaut'
                then
                  ImagePopup.Items[1].Enabled := false
                else
                  ImagePopup.Items[1].Enabled := true;

                if (TImage(Sender).Hint <> 'unbebaut')
                   or (Auftrag > 0)
                then
                  ImagePopup.Items[0].Enabled := false
                else
                  ImagePopup.Items[0].Enabled := true;

                ImagePopup.Popup(Main_Form.Left +
                TImage(Sender).Left,Main_Form.Top +
                TImage(Sender).Top + Y);
              end;
    end;
    ImagePopup.Items[0].Enabled := false;
//end
//else
//  Showmessage(TImage(MSender).Hint);
end;

Sharky 17. Okt 2004 15:32

Re: Fehlermeldung beim beenden
 
Delphi-Quellcode:
procedure TAusgabe.OnFormClose(Sender: TObject; var Action: TCloseAction);
begin
  TForm(Sender).Destroy;
end;
Wofür ist den dieser Code gedacht?

Dax 17. Okt 2004 15:33

Re: Fehlermeldung beim beenden
 
Das IST der Fehler, oder?
Das Formular kann sich doch nach dem OnDestroy nicht nochmals zerstören....

Matze 17. Okt 2004 15:59

Re: Fehlermeldung beim beenden
 
Das sollte sich von alleine zerstören - Code raus und es geht, würde ich sagen.

Nicodius 17. Okt 2004 16:01

Re: Fehlermeldung beim beenden
 
das tut nichts zur sache ... weil das hab ich nur auf reaktion auf diesen fehelr geschrieben

habs jetzt gelöscht ....


aber ich kann ja öfters auf ein bild klicken(bild klick - fenster wird generiert - close - wieder ein bild klicken - fenster wird generiert - close) .... Wenn ich das HAUPTPROGRAMM beende kommt die meldung


... aber nur wenn ich vorher mindestens einmal auf ein bild geklickt habe :cry:

Nicodius 17. Okt 2004 16:03

Re: Fehlermeldung beim beenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Code:
---------------------------
Anwendungsfehler
---------------------------
Exception EAccessViolation in Modul Military.exe bei 0001BCD2.
Zugriffsverletzung bei Adresse 0041BCD2 in Modul 'Military.exe'. Lesen von Adresse 54534574.
---------------------------
OK  
---------------------------
der code kommt direkt beim schließen der exe wenn ich mal auf ein bild geklickt habe(bleibt da was im speicher?)


hier das programm damit ihr seht was ich mein ... klickt einmal auf ein bild .. und dann schließt

und einmal gleich schließen


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz