AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception EAccessViolation Form Free

Ein Thema von shidap · begonnen am 1. Feb 2005 · letzter Beitrag vom 1. Feb 2005
Antwort Antwort
shidap

Registriert seit: 28. Jan 2005
Ort: Wiesbaden
6 Beiträge
 
Delphi 6 Professional
 
#1

Exception EAccessViolation Form Free

  Alt 1. Feb 2005, 10:37
** Exception EAccessViolation **

[dp][df]


Hi,

Bekomme o.a. Fehlermeldung (Delphi 6) weiß aber nicht warum.


procedure Tfrmsaselogin.FormCreate(Sender: TObject);
...
...
StartMainRptScreen(Application, SaseAdoConn, strUserId, strAccessLevel);


Fehlermeldung hier:

If Assigned(frmsaselogin) then
frmsaselogin.Free;


Ich bin für jeden Vorschlag sehr Dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Exception EAccessViolation Form Free

  Alt 1. Feb 2005, 11:47
In frmsaselogin steht ein ungültiger Wert drin. Ist dieser auch richtig initsialisiert mit nil?

Auf jeden Fall wäre bissle mehr Quellcode nicht schlecht. Für micht sieht es sehr durcheinander aus, da man nicht erkannt, was zu was gehört.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Chegga
Chegga

Registriert seit: 5. Nov 2004
Ort: Kirchheim
453 Beiträge
 
Delphi 7 Architect
 
#3

Re: Exception EAccessViolation Form Free

  Alt 1. Feb 2005, 12:04
Hi,

Zitat von jim_raynor:
Auf jeden Fall wäre bissle mehr Quellcode nicht schlecht.
Und benutze bitte die Delphi-Tags.

Also nicht so:

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('So nicht!!');
end;

sondern:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('So ist es schöner und vor allem lesbarer!');
end;
MfG Marc

Tip: Benutze den Delphi-Code Button
Marc P.
Grüße aus Kirchheim Teck
  Mit Zitat antworten Zitat
shidap

Registriert seit: 28. Jan 2005
Ort: Wiesbaden
6 Beiträge
 
Delphi 6 Professional
 
#4

Re: Exception EAccessViolation Form Free

  Alt 1. Feb 2005, 12:24
If the user does not have the report INI, it will prompted with a login, otherwise it will run the report automatically and (should) end the application upon completion.

Delphi-Quellcode:
procedure Tfrmsaselogin.FormCreate(Sender: TObject);
var Connstr : String;
strFTPReportDIR : String;
strUserId : ShortString;
begin
     Scaleform(self);
     DateSeparator := '-';
     ShortDateFormat := 'yyyy' + DateSeparator + 'mm' + DateSeparator + 'dd';
     ThousandSeparator := '.';
     DecimalSeparator := ',';

     try
         SaseAdoConn.Open
     except on E:Exception do
        begin
             Screen.Cursor := crDefault;
             SaseAdoConn := Nil;
             ShowMessage(E.Message);
        end;
     end;

     MyIniFile := TIniFile.Create('./SASE_Report.ini');
     logintry:=0;
     logon_q.DatabaseName:= SASEDB.DatabaseName;

     //Check if the .ini file exists or not
     If FileExists('./SASE_Report.ini') then
     begin
          strFTPReportDIR := MyInifile.ReadString('FTPReportDirectory', 'FTPReportDIR', '');
          If Trim(strFTPReportDIR) <> 'then
          begin
              MyInifile.Free;
              strUserId := 'Automatik';
              strUserId:=LowerCase(strUserId);
              strAccessLevel := '0';
              // Go straight to the Report Generator
              StartGenerateReports(Application,SaseAdoConn,-1, Now, Now, '');

              // when the user exits the Form "StartGenerateReports" the Application should end.
              If Assigned(frmsaselogin) then
                 frmsaselogin.Free;

              // I tried closed and Exit but the application remainded in the background

          end;
     end;

     // If there is no INI show the User the Login screen and let them enter their password

     USID_EB.Text := GetSystemUserName;
end;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Exception EAccessViolation Form Free

  Alt 1. Feb 2005, 12:27
Zitat von shidap:
Delphi-Quellcode:
procedure Tfrmsaselogin.FormCreate(Sender: TObject);
StartMainRptScreen(Application, SaseAdoConn, strUserId, strAccessLevel);

   If Assigned(frmsaselogin) then
      frmsaselogin.Free;
Du darfst in FormCreate nicht das eigene Formular freigeben!!
(wenn es doch nötig ist, kann man die Methode Release verwenden)
Du darfst ausserdem nicht in einer Methode auf eine Objektvariable der eigenen Klasse zugreifen.
Du kannst aber ein Klassenfunktion schreiben, um ein Formular modal anzuzeigen:

Delphi-Quellcode:
Tfrmsaselogin = class(TForm)

public
   class function ShowLoginDialog:integer;
end;

class function Tfrmsaselogin.ShowLoginDialog:integer;
var
   f : Tfrmsaselogin;
begin
   f := Tfrmsaselogin.Create(nil);
   try
      result := f.ShowModal;
      
      StartMainRptScreen(Application, SaseAdoConn, strUserId, strAccessLevel);

   finally
      f.Free;
   end;
end;
Zum Beenden einer Anwendung benutzt man:
   Application.Terminate;
Andreas
  Mit Zitat antworten Zitat
shidap

Registriert seit: 28. Jan 2005
Ort: Wiesbaden
6 Beiträge
 
Delphi 6 Professional
 
#6

Re: Exception EAccessViolation Form Free

  Alt 1. Feb 2005, 12:30
Danke!

Shidap
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 Uhr.
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