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 Adressverletzung? (https://www.delphipraxis.net/110818-adressverletzung.html)

fortuneNext 25. Mär 2008 11:41


Adressverletzung?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe hier ein Problem mit meinem Projekt. Und zwar kommt beim application.run immer ein Fehler. (Adressverletzung bla bla). Ich hab keine entfernte Ahnung, woran das liegen könnte, leider.
Falls es hilft, wenn ich die Zeilen der Units weglasse, wo auf andere Units zugegriffen wird, läufts normal.
Hoffe auf Hilfe
fortuneNext

(Projekt ist als .zip angehängt)

mkinzler 25. Mär 2008 11:46

Re: Adressverletzung?
 
In welcher Unit tritt der Fehler auf? Ich vermute mal uLoad. Verfrachte mal den freien Code in die Formklasse.

toms 25. Mär 2008 11:47

Re: Adressverletzung?
 
Hallo,

Aktiviere mal madexcept. Dann sollte dir die Codezeile angezeigt werden,
wo der Fehler entsteht.

fortuneNext 25. Mär 2008 12:20

Re: Adressverletzung?
 
Zitat:

Zitat von mkinzler
In welcher Unit tritt der Fehler auf? Ich vermute mal uLoad. Verfrachte mal den freien Code in die Formklasse.

Das wars. Hat auch Mad gesagt. Habs einfach in eine OnShow Prozedur getan, dann hats gepasst. Aber die Frage ist: Warum funktioniert das nicht über freien Code?

fortuneNext 25. Mär 2008 13:52

Re: Adressverletzung?
 
Ich verzweifle noch.

Delphi-Quellcode:
procedure Tfload.Load;
var
  Regist: TRegistry;
begin
ProgBar_Load.Position := 60;
If ParamStr(1) = '' then
begin
  ProgBar_Load.Position := 100;      
  fLoad.Hide;
  fMain.Show;
end
else if StrToInt(ParamStr(1)) > 0 then
begin
  PasswordNumber := 'Password' + ParamStr(1);
  PathNumber := 'Path' + ParamStr(1);
  Regist := TRegistry.Create;
  Regist.RootKey := HKEY_LOCAL_MACHINE;
  Regist.OpenKeyReadOnly('SOFTWARE\FNAG Coorperation\FNAG Secret\1.0');
  RPassword := Regist.ReadString(PasswordNumber);
  Path := Regist.ReadString(PathNumber);
  Regist.CloseKey;
  Regist.Free;
  ProgBar_Load.Position := 100;
  fLoad.Hide;
  fPW.Show;
end;
end;
Diese Prozedur soll jetzt also direkt beim Starten des Programms ausgeführt werden. Die Form Load wird ja als einzige direkt angezeigt.
Wenn ich es in ein OnShow, OnCreate, OnActivate, OnPaint usw. Ereignis packe bringt er diese Fehlermeldung, sobald die Prozedur ausgeführt wird:
Zitat:

Im Projekt pFNAGSecret ist eine Exception der Klasse EInvalid Operation aufgetreten. Meldung: 'Eigenschaft Visible kann in OnShow oder OnHide nicht verändert werden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Wenn ichs in einen 1-Intervall-Timer setze gibts wieder einen AcessViolation-Fehler. Jemand ne Idee? Ich verzweifle an dem verdammten Projekt noch...

mkinzler 25. Mär 2008 13:57

Re: Adressverletzung?
 
Fehlermeldung sagt doch alles: Würde ja zu einer Endlosschleife führen. pack den Code mal ins .onCreate

fortuneNext 25. Mär 2008 14:37

Re: Adressverletzung?
 
Zitat:

Zitat von mkinzler
pack den Code mal ins .onCreate

EDIT: Sorry, vertan gerade.



Da kommt die übliche AccessViolation Fehlermeldung. Und zwar in der fMain.Show-Zeile.
Danach springt er aus unerfindlichem Grunde in die Zeile fPW.Show der ELSE IF Kondition.

fortuneNext 25. Mär 2008 14:52

Re: Adressverletzung?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok ich folgere: Aus irgendwelchen Gründen scheint er einfach nicht die Form fMain zu .show wollen. Da gibts dann immer die Violation. Ich hab nochmal die letzte Version mit Mad drin angehängt, vielleicht liegts ja an irgendwas offensichtlichem, das ich nicht sehe...

Jelly 25. Mär 2008 16:48

Re: Adressverletzung?
 
Du verwechselst ParamCount und ParamStr in deiner Load Methode... Lies mal in der Hilfe nach deren Bedeutung nach.

fortuneNext 25. Mär 2008 16:54

Re: Adressverletzung?
 
Hm ok habs in meiner Datei mal gefixt.
Wenn ich das richtig verstehe ist ParamStr(1) der erste parameter, der angegeben wird, und ParamCount die Anzahl der angegebenen Parameter. Letzteres macht natürlich nicht soviel Sinn. Danke für den Hinweis ;)
Am Fehler ändert das leider nichts :-(
Aus irgendeinem Grund weigert er sich einfach, die form.show befehle auszuführen. habs jetzt in edlichen Positionen versucht, doch immer, wenn er eine andere Form anzeigen soll, kommt der Fehler. Ich komm einfach nicht drauf worans liegt :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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