![]() |
Datenbank: Delphi BDE • Version: delphi 6 • Zugriff über: Table (TAdmin) und DataSource (DataSource1)
Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
hallo leute,
ich weiss, es gab schon einige Einträge zu diesem Thema, aber geholfen hat keiner. ich mache ein programm, bei dem man sich als administrator anmelden kann. dabei gibt man den Username und das PW ein. der code sieht wie folgt aus
Delphi-Quellcode:
'ok' wird in der Funktion isOk übergeben und isOk auf true gesetzt, wenn ok = 1
procedure TFormAdmin.sbAdminClick(Sender: TObject);
var user, pw: string; begin user := edAdminUser.Text; //editfeld für Username eintrag pw := meAdminPW.Text; //maskedit feld für PW UnitLogin.FormLogin.TAdmin.Active := false; //die Tabelle ist im objkt.inspector auf true gesetzt UnitLogin.FormLogin.TAdmin.Filtered := false; UnitLogin.FormLogin.TAdmin.Filter := 'User = '+QuotedStr( user ); UnitLogin.FormLogin.TAdmin.Filtered := True; UnitLogin.FormLogin.TAdmin.Open; if ((edAdminUser.Text = 'mad') AND ( meAdminPW.Text = '1234' )) OR ( pw = UnitLogin.FormLogin.dbePW.Text ) then begin showmessage('Eingabe korrekt. Sie wurden als Administrator angemeldet.'); //information an den Benutzer btAdminOK.Enabled := true; //wird freigegeben. sbAdminLogin.Enabled := true; //als Admin kann man weitere Admins erstellen. ok := 1; end else begin showmessage('Der Benutzername oder das Passwort stimmt nicht. Versuchen Sie es erneut.'); ok := 0; end; end; als admin kann man die einstellungen ändern und neue benutzer erfassen. ich hoffe jemand kann mir helfen mfg mark |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
Wo genau tritt denn der Fehler auf?
Edit: Fast ergessen: Herzlich Willkommen in der DP !! :party: |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
Hallo,
kann es sein, dass "User" ein reserviertes Wort ist? |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
nicht das ich wüsste..
|
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
nein, ich habe es zuhause gemacht und alles lieg einwandfrei. danach wollte ich es heute in den code einbauen (habe alles gleich gemacht) aber es kommt immer der fehler. ich habe soeben 2 neue klassen gemacht, die auf eine neue db ugreifen. der fehler kommt genau bei
Delphi-Quellcode:
UnitLogin.FormLogin.TAdmin.Active := false;
|
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
Ich rate mal: UnitLogin.FormLogin ist nil.
|
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
das heisst?
|
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
Wann wird denn FormLogin erzeugt? In der .dpr?
|
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
Zitat:
Dan verrate ich dir auch eine sehr oft anzutrefenden Fehler den man macht wenn man nicht noch nicht so fit in der Programmierung mit VCL und der IDE ist. Aber blos auf verdacht gleich diese Fehlerquelle breit zu treten wollte ich nicht. |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
ja, ich habe die form schon erstellt. wenn ok = 1 dan wird ein button enable mit dem man auf die db zugreiffen kann, also mit dbedit feldern und einer dbnavigation.
was meinst du mit formlogin = nil dases not in list heisst weiss ich. ich habe eine klasse login, die nur über die Form benutzt wird. es hat weder funktionen noch sonst etwas. mit login greiffe ich auf die db zu und stelle sie in den dbedit feldern dar. dazu kann ich neue einträge mit dem navigator mache. oder was meinst du mit formlogin = nil?
Delphi-Quellcode:
unit UnitLogin2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, Mask, DBCtrls, ExtCtrls; type TFormLogin2 = class(TForm) DataSource1: TDataSource; DBNavigator1: TDBNavigator; dbeUser: TDBEdit; dbePW: TDBEdit; Table1: TTable; Label1: TLabel; Label2: TLabel; Button1: TButton; private { Private-Deklarationen } public { Public-Deklarationen } end; var FormLogin2: TFormLogin2; implementation {$R *.dfm} end. |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
vieleicht hilft das:
Delphi-Quellcode:
unit UnitAdmin2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, UnitLogin2; type TFormAdmin2 = class(TForm) Label1: TLabel; Label2: TLabel; edUser: TEdit; mePW: TMaskEdit; btOK: TButton; procedure btOKClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } function isOK: boolean; end; var FormAdmin2: TFormAdmin2; ok: integer; implementation {$R *.dfm} { TFormAdmin2 } function TFormAdmin2.isOK: boolean; begin if ( ok = 1 ) then result := true else result := false; end; procedure TFormAdmin2.btOKClick(Sender: TObject); var user,pw: string; begin user := edUser.Text; pw := mePW.Text; UnitLogin2.FormLogin2.Table1.Active := false; UnitLogin2.FormLogin2.Table1.Filtered := false; UnitLogin2.FormLogin2.Table1.Filter := 'User = '+QuotedStr( user ); UnitLogin2.FormLogin2.Table1.Filtered := true; UnitLogin2.FormLogin2.Table1.Open; if (pw = UnitLogin2.FormLogin2.dbePW.Text) then showmessage('klappt') else showmessage('klappt nicht'); end; end. |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
Zitat:
Delphi-Quellcode:
und lass dir den Inhalt der Variable FormLogin anzeigen. Und dort wird dir die IDE höchstwahrscheinlich nil anzeigen. Und das heißt das es die Variable FormLogin auf kein erzeugtes Formular zeigt und du in die Falle der automatisch erzeugten Formulare getappt bist.
UnitLogin.FormLogin.TAdmin.Active := false;
|
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
:gruebel: hmm.. kannst du das etwas einfach ausdrücken. also wenn ich mit dem cursor auf die zeile gehe, komm 'var UnitLogin2.FormLogin2: TFormLogin2 - UnitLogin2.pas (26)' oder was ist IDE?
dan weiter, wenn ich ctrl+shift+f11 drücke, erscheint formlogin2 mit formadmin2 auf der liste der automatisch erzeugen formulare |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
Zitat:
Zitat:
|
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
nei, ich habe eben 2 neue klassen gemacht, Unitlogi.pas und unitAdmin.pas mit unitLogin2.pas und unitAdmin2.pas ersetzt. dementsprechend sind auch die forms auf formlogin2 und formadmin2 geändert worden.
€: und die stehen beide in dieser liiste |
Re: Zugriffsverletzung bei Adresse *** in Modul '*.exe'.
was bedeutet das eigentlich, wenn in der objekt hierarchie der form bei <?> {Alias} und **.db {Table 1} ein gelbes fragezeichen davor steht?? wahrscheinlich nichts gutes
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz