![]() |
Exception der Klasse EAccessViolation aufgetreten!
Hallo
Beim Kompilieren eines meiner Projekte, tritt (mir unerklärlicher Weise) folgende Exception auf: --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt BrainTrainer.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0046120E in Modul 'BrainTrainer.exe'. Lesen von Adresse 000002F4'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- Ich weiß auch nicht was mit der Zugriffsverletzung gemeint ist... :wall: Weiß jemand wo der Fehler liegt und eine Lösung? Hier ist der Quellcode des Hauptformulars:
Delphi-Quellcode:
Hier habe ich dann noch mal den Quelcode der Projektdatei:
unit StartbildschirmUnit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, jpeg, ExtCtrls, LMDControl, LMDBaseControl, LMDBaseGraphicControl, LMDBaseLabel, LMDCustomLabel, LMDCustomLabelFill, LMDLabelFill, LMDCustomSimpleLabel, LMDSimpleLabel; type TStartbildschirm = class(TForm) StartTimer: TTimer; Image1: TImage; Label1: TLabel; Label2: TLabel; LMDSimpleLabel1: TLMDSimpleLabel; Memo1: TMemo; ProgressBar1: TProgressBar; Timer1: TTimer; LMDSimpleLabel2: TLMDSimpleLabel; LMDSimpleLabel3: TLMDSimpleLabel; LMDSimpleLabel4: TLMDSimpleLabel; Label3: TLabel; Label4: TLabel; Memo2: TMemo; Label5: TLabel; Label6: TLabel; Label7: TLabel; procedure StartTimerTimer(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Startbildschirm: TStartbildschirm; implementation uses Inifiles, BrainTrainerStartUnit, Registry, InfoUnit, BestenlisteUnit, AnfaengerUnit, MittelUnit, ProfiUnit, GenieUnit,EndeUnit, RegSchluesselEingabeUnit, CommCtrl, OptionsUnit; {$R *.dfm} procedure TStartbildschirm.StartTimerTimer(Sender: TObject); begin Start.show; Startbildschirm.Visible := false; if Start.Visible = true then begin Startbildschirm.StartTimer.Enabled := false ; end; end; procedure TStartbildschirm.FormShow(Sender: TObject); begin if FileExists('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\RegKey.txt') then begin Memo1.Lines.LoadFromFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\RegKey.txt'); end; end; procedure TStartbildschirm.FormCreate(Sender: TObject); var regist: TRegistry; i: integer; s: string; datum1, datum2, datum3: TDate; ini : TInifile; begin { if FileExists('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\FVsRegKey.rep') then begin startbildschirm.Memo1.Lines.LoadFromFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\FVsRegKey.rep'); Startbildschirm.LMDSimpleLabel1.visible := false; Startbildschirm.LMDSimpleLabel2.Visible := false; Startbildschirm.LMDSimpleLabel3.Visible := false; Startbildschirm.LMDSimpleLabel4.Visible := false; end; } regist:=TRegistry.Create; try regist.RootKey:=HKEY_LOCAL_MACHINE; //voreingestellt ist HKEY_CURRENT_USER regist.OpenKey('SOFTWARE\E.T.-IT Software Corporation\BrainTrainer\2.0',true); regist.WriteString('Product', 'BrainTrainer'); regist.WriteString('Version', '2.0'); regist.WriteString('Seriennummer', 'PTIN-ZVUW-MKOH-XZ5D'); if LMDSimpleLabel1.Visible = true then begin regist.WriteString('', 'Unregistriert'); end else begin regist.WriteString('', 'Registriert'); end; finally regist.Free; end; if FileExists('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\language.ini') then try Ini:=TIniFile.Create('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\language.ini'); label7.Caption:=Ini.ReadString('favoritelanguage','language','Wert'); finally Ini.Free; end; startbildschirm.label5.Caption := datetostr(now); if fileexists('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\regdate.rep') then begin startbildschirm.memo2.Lines.LoadFromFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\regdate.rep'); startbildschirm.label4.Caption := startbildschirm.memo2.Text; datum1:=StrToDate(label4.Caption); datum2:=now; { datum3:=label3.caption;} //Differenz zwischen datum1 und datum2 in Tagen datum3:=datum2-datum1; label3.Caption := datetostr(datum3); SendMessage(Startbildschirm.ProgressBar1.Handle, PBM_SETBARCOLOR, 0,cllime); if FileExists('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Config.reg') then begin Options.visible:=false; end else Options.visible:=true; end; end; procedure TStartbildschirm.Timer1Timer(Sender: TObject); begin ProgressBar1.StepIt; end; end.
Delphi-Quellcode:
Da das 19 Formulare sind hab hier halt nur die zwei wichtigsten genommen!
program BrainTrainer;
uses Forms, StartbildschirmUnit in 'StartbildschirmUnit.pas' {Startbildschirm}, BrainTrainerStartUnit in 'BrainTrainerStartUnit.pas' {Start}, BestenlisteUnit in 'BestenlisteUnit.pas' {Bestenliste}, InfoUnit in 'InfoUnit.pas' {Info}, AnfaengerUnit in 'AnfaengerUnit.pas' {Anfaenger}, MittelUnit in 'MittelUnit.pas' {Mittel}, ProfiUnit in 'ProfiUnit.pas' {Profi}, GenieUnit in 'GenieUnit.pas' {Genie}, EndeUnit in 'EndeUnit.pas' {Ende}, KontaktUnit in 'KontaktUnit.pas' {Kontakt}, HinweisUnit in 'HinweisUnit.pas' {Hinweis}, RegSchluesselEingabeUnit in 'RegSchluesselEingabeUnit.pas' {RegistrierungsschluesselEingeben}, RegKeyUnit in 'RegKeyUnit.pas' {RegKey}, PCRECHNERUnit in 'PCRECHNERUnit.pas' {PCRECHNER}, NeuerUser in 'NeuerUser.pas' {NeuerBenutzer}, PCRECHNERFortgeschritten in 'PCRECHNERFortgeschritten.pas' {PCRFortgeschritten}, PCRECHNERGenie in 'PCRECHNERGenie.pas' {PCRGEnie}, PCRECHNERProfi in 'PCRECHNERProfi.pas' {PCRProfi}, OptionsUnit in 'OptionsUnit.pas' {Options}; {$R *.res} begin Application.Initialize; Application.Title := 'BrainTrainer'; Application.HelpFile := 'C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\HILFE.HLP'; Application.CreateForm(TStartbildschirm, Startbildschirm); Application.CreateForm(TStart, Start); Application.CreateForm(TInfo, Info); Application.CreateForm(TAnfaenger, Anfaenger); Application.CreateForm(TMittel, Mittel); Application.CreateForm(TProfi, Profi); Application.CreateForm(TGenie, Genie); Application.CreateForm(TBestenliste, Bestenliste); Application.CreateForm(TEnde, Ende); Application.CreateForm(TKontakt, Kontakt); Application.CreateForm(THinweis, Hinweis); Application.CreateForm(TRegistrierungsschluesselEingeben, RegistrierungsschluesselEingeben); Application.CreateForm(TRegKey, RegKey); Application.CreateForm(TPCRECHNER, PCRECHNER); Application.CreateForm(TNeuerBenutzer, NeuerBenutzer); Application.CreateForm(TPCRFortgeschritten, PCRFortgeschritten); Application.CreateForm(TPCRGEnie, PCRGEnie); Application.CreateForm(TPCRProfi, PCRProfi); Application.CreateForm(TOptions, Options); Application.Run; end. PS: Nach der Exception war vor "Application.CreateForm(TStart, Start);" ein Pfeil (vllt. hilft das ja jemandem ...) |
Re: Exception der Klasse EAccessViolation aufgetreten!
Bescheid! ;-)
Ohne Quelltext wird das wohl ziemlich schwer :stupid: |
Re: Exception der Klasse EAccessViolation aufgetreten!
Im FormCreate sind die Komponenten des Formulars noch nicht erzeugt.
|
Re: Exception der Klasse EAccessViolation aufgetreten!
Zitat:
An den Fragesteller: In welcher Zeile bekommst du diese Zugriffsverletzung? Hast du schon mal Haltepunkte gesetzt und bist die Anweisungen einzeln durchgegangen? Zu dem solltest du überprüfen ob OpenKey der TRegistry-Klasse erfolgreich war. |
Re: Exception der Klasse EAccessViolation aufgetreten!
Zitat:
|
Re: Exception der Klasse EAccessViolation aufgetreten!
Zitat:
|
Re: Exception der Klasse EAccessViolation aufgetreten!
Zitat:
Delphi-Quellcode:
So hier der Quellcode aber ich check das noch mal mit den Haltepunkten durch!!
unit BrainTrainerStartUnit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ComCtrls, jpeg, ExtCtrls, Buttons, LMDControl, LMDBaseControl, LMDBaseGraphicControl, LMDGraphicControl, LMDCustomGraphicLabel, LMDGraphicLabel, LMDCustomComponent, LMDTaskDlg, StdCtrls; type TStart = class(TForm) Image1: TImage; StatusBar1: TStatusBar; MainMenu1: TMainMenu; Datei1: TMenuItem; Bestenliste1: TMenuItem; N1: TMenuItem; Beenden1: TMenuItem; Hilfe1: TMenuItem; Hilfe2: TMenuItem; N2: TMenuItem; Info1: TMenuItem; PopupMenu1: TPopupMenu; NeuesSpiel1: TMenuItem; N3: TMenuItem; Bestenliste2: TMenuItem; N4: TMenuItem; Beenden2: TMenuItem; Anfnger1: TMenuItem; Mittel1: TMenuItem; Profi1: TMenuItem; Genie1: TMenuItem; NeuesSpiel2: TMenuItem; N5: TMenuItem; Anfnger2: TMenuItem; Mittel2: TMenuItem; Profi2: TMenuItem; Genie2: TMenuItem; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; Image2: TImage; Hilfe3: TMenuItem; Info2: TMenuItem; N6: TMenuItem; Bestenlisteanzeigen1: TMenuItem; N7: TMenuItem; Bestenlistespeichern1: TMenuItem; Bearbeiten1: TMenuItem; Service1: TMenuItem; Kontakt1: TMenuItem; N9: TMenuItem; Homepage1: TMenuItem; Extras1: TMenuItem; N10: TMenuItem; Registrieren1: TMenuItem; Registrieren2: TMenuItem; N11: TMenuItem; Registrierungsschlsseleingeben1: TMenuItem; N12: TMenuItem; Fehlermelden1: TMenuItem; Anfnger3: TMenuItem; N13: TMenuItem; Fortgeschritten1: TMenuItem; N14: TMenuItem; Profi3: TMenuItem; N15: TMenuItem; Genie3: TMenuItem; Language1: TMenuItem; DeutschDe1: TMenuItem; N16: TMenuItem; N17: TMenuItem; Timer1: TTimer; Image3: TImage; Image4: TImage; Label1: TLabel; NeuerBenutzer1: TMenuItem; procedure Beenden1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Beenden2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Info1Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure Anfnger2Click(Sender: TObject); procedure Mittel2Click(Sender: TObject); procedure Profi2Click(Sender: TObject); procedure Genie2Click(Sender: TObject); procedure Info2Click(Sender: TObject); procedure Hilfe3Click(Sender: TObject); procedure Bestenlisteanzeigen1Click(Sender: TObject); procedure Kontakt1Click(Sender: TObject); procedure Hilfe2Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Registrieren2Click(Sender: TObject); procedure Registrierungsschlsseleingeben1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Fehlermelden1Click(Sender: TObject); procedure DeutschDe1Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure NeuerBenutzer1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Start: TStart; implementation uses BestenlisteUnit, InfoUnit, AnfaengerUnit, MittelUnit, ProfiUnit, GenieUnit, ShellApi, KontaktUnit, RegSchluesselEingabeUnit, StartbildschirmUnit, registry, inifiles, NeuerUser; {$R *.dfm} procedure TStart.Beenden1Click(Sender: TObject); begin Bestenliste.Memo1.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Anfänger.scl'); Bestenliste.Memo2.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Fortgeschritten.scl'); Bestenliste.Memo3.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Profi.scl'); Bestenliste.Memo4.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Genie.scl'); Application.Terminate; end; procedure TStart.FormClose(Sender: TObject; var Action: TCloseAction); begin Bestenliste.Memo1.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Anfänger.scl'); Bestenliste.Memo2.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Fortgeschritten.scl'); Bestenliste.Memo3.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Profi.scl'); Bestenliste.Memo4.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Genie.scl'); Application.Terminate; end; procedure TStart.Beenden2Click(Sender: TObject); begin Bestenliste.Memo1.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Anfänger.scl'); Bestenliste.Memo2.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Fortgeschritten.scl'); Bestenliste.Memo3.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Profi.scl'); Bestenliste.Memo4.Lines.SaveToFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Genie.scl'); Application.Terminate; end; procedure TStart.Timer1Timer(Sender: TObject); begin StatusBar1.Panels[0].Text := Datetostr(now); StatusBar1.Panels[1].Text := Timetostr(now); end; procedure TStart.Info1Click(Sender: TObject); begin Info.show; end; procedure TStart.SpeedButton1Click(Sender: TObject); begin Anfaenger.show; end; procedure TStart.SpeedButton2Click(Sender: TObject); begin Mittel.show; end; procedure TStart.SpeedButton3Click(Sender: TObject); begin Profi.show; end; procedure TStart.SpeedButton4Click(Sender: TObject); begin Genie.show; end; procedure TStart.Anfnger2Click(Sender: TObject); begin Anfaenger.Show; end; procedure TStart.Mittel2Click(Sender: TObject); begin Mittel.show; end; procedure TStart.Profi2Click(Sender: TObject); begin Profi.Show; end; procedure TStart.Genie2Click(Sender: TObject); begin Genie.show; end; procedure TStart.Info2Click(Sender: TObject); begin Info.Show; end; procedure TStart.Hilfe3Click(Sender: TObject); begin if ShellExecute(Application.Handle, 'open', PChar('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Hilfe.hlp'), Nil, Nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); end; procedure TStart.Bestenlisteanzeigen1Click(Sender: TObject); begin Bestenliste.show; end; procedure TStart.Kontakt1Click(Sender: TObject); begin Kontakt.show; end; procedure TStart.Hilfe2Click(Sender: TObject); begin if ShellExecute(Application.Handle, 'open', PChar('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Hilfe.hlp'), Nil, Nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); end; procedure TStart.FormShow(Sender: TObject); begin Timer1.Enabled := true; end; procedure TStart.Registrieren2Click(Sender: TObject); begin if ShellExecute(Application.Handle, 'open', PChar('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Registrieren.exe'), Nil, Nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); end; procedure TStart.Registrierungsschlsseleingeben1Click(Sender: TObject); begin RegistrierungsschluesselEingeben.show; end; procedure TStart.FormCreate(Sender: TObject); var Ini:TInifile; begin if FileExists('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Anfänger.scl') then begin { Bestenliste.Memo1.Lines.LoadFromFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Anfänger.scl'); bestenliste.Memo2.Lines.LoadFromFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Fortgeschritten.scl'); bestenliste.Memo3.Lines.LoadFromFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Profi.scl'); bestenliste.Memo4.Lines.LoadFromFile('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Genie.scl'); }end; if startbildschirm.label7.Caption = 'English' then begin try Ini:=TIniFile.Create('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\languagefile.ini'); Start.Datei1.Caption:=Ini.readstring('English','File','Wert'); Start.Beenden1.Caption:=Ini.ReadString('English','close','wert'); start.Beenden2.Caption:=Ini.ReadString('English','close','wert'); start.bestenlisteanzeigen1.Caption:=Ini.ReadString('English','Score','Wert'); start.Bestenliste1.Caption:=Ini.ReadString('English','Score','wert'); start.Bestenliste2.Caption:=Ini.ReadString('English','Score','wert'); start.Bearbeiten1.Caption:=Ini.ReadString('English','Edit','wert'); start.NeuesSpiel2.Caption:=Ini.readstring('English','New','wert'); start.NeuesSpiel1.Caption:=Ini.readstring('English','New','wert'); start.Hilfe1.Caption:=Ini.ReadString('English','Help','wert'); start.Hilfe2.Caption:=Ini.ReadString('English','Help','wert'); start.Hilfe3.Caption:=Ini.ReadString('English','Help','wert'); start.Info1.Caption:=Ini.ReadString('English','Info','wert'); start.Anfnger1.Caption:=Ini.readstring('English','beginner','wert'); start.Anfnger2.Caption:=Ini.readstring('English','beginner','wert'); start.Anfnger3.Caption:=Ini.readstring('English','beginner','wert'); start.Fortgeschritten1.Caption:=Ini.ReadString('english','advanced','wert'); start.Genie1.Caption:=Ini.ReadString('English','genius','wert'); start.Genie2.Caption:=Ini.ReadString('English','genius','wert'); start.Genie3.Caption:=Ini.ReadString('English','genius','wert'); start.Profi1.Caption:=Ini.ReadString('english','pro','wert'); start.Profi2.Caption:=Ini.ReadString('english','pro','wert'); start.Profi3.Caption:=Ini.ReadString('english','pro','wert'); start.Service1.Caption:=Ini.ReadString('English','service','wert'); start.Mittel1.Caption:=Ini.ReadString('english','advanced','wert'); start.Mittel2.Caption:=Ini.readstring('english','advanced','wert'); start.Extras1.Caption:=Ini.ReadString('english','extras','wert'); start.Registrieren1.Caption:=Ini.ReadString('english','register','wert'); start.Registrieren2.Caption:=Ini.ReadString('english','register','wert'); finally Ini.Free; end; if startbildschirm.lmdsimplelabel1.Visible = false then begin speedbutton4.Enabled := true; Speedbutton3.Enabled := true; StatusBar1.Panels[4].Text := ' '; end; end else begin try Ini:=TIniFile.Create('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\languagefile.ini'); Start.Datei1.Caption:=Ini.readstring('Deutsch','File','Wert'); Start.Beenden1.Caption:=Ini.ReadString('Deutsch','close','wert'); start.Beenden2.Caption:=Ini.ReadString('Deutsch','close','wert'); start.bestenlisteanzeigen1.Caption:=Ini.ReadString('Deutsch','Score','Wert'); start.Bestenliste1.Caption:=Ini.ReadString('Deutsch','Score','wert'); start.Bestenliste2.Caption:=Ini.ReadString('Deutsch','Score','wert'); start.Bearbeiten1.Caption:=Ini.ReadString('Deutsch','Edit','wert'); start.NeuesSpiel2.Caption:=Ini.readstring('Deutsch','New','wert'); start.NeuesSpiel1.Caption:=Ini.readstring('Deutsch','New','wert'); start.Hilfe1.Caption:=Ini.ReadString('Deutsch','Help','wert'); start.Hilfe2.Caption:=Ini.ReadString('Deutsch','Help','wert'); start.Hilfe3.Caption:=Ini.ReadString('Deutsch','Help','wert'); start.Info1.Caption:=Ini.ReadString('Deutsch','Info','wert'); start.Anfnger1.Caption:=Ini.readstring('Deutsch','beginner','wert'); start.Anfnger2.Caption:=Ini.readstring('Deutsch','beginner','wert'); start.Anfnger3.Caption:=Ini.readstring('Deutsch','beginner','wert'); start.Fortgeschritten1.Caption:=Ini.ReadString('Deutsch','advanced','wert'); start.Genie1.Caption:=Ini.ReadString('Deutsch','genius','wert'); start.Genie2.Caption:=Ini.ReadString('Deutsch','genius','wert'); start.Genie3.Caption:=Ini.ReadString('Deutsch','genius','wert'); start.Profi1.Caption:=Ini.ReadString('Deutsch','pro','wert'); start.Profi2.Caption:=Ini.ReadString('Deutsch','pro','wert'); start.Profi3.Caption:=Ini.ReadString('Deutsch','pro','wert'); start.Service1.Caption:=Ini.ReadString('Deutsch','service','wert'); start.Mittel1.Caption:=Ini.ReadString('Deutsch','advanced','wert'); start.Mittel2.Caption:=Ini.readstring('Deutsch','advanced','wert'); start.Extras1.Caption:=Ini.ReadString('Deutsch','extras','wert'); start.Registrieren1.Caption:=Ini.ReadString('Deutsch','register','wert'); start.Registrieren2.Caption:=Ini.ReadString('Deutsch','register','wert'); finally Ini.Free; end; if startbildschirm.lmdsimplelabel1.Visible = false then begin speedbutton4.Enabled := true; Speedbutton3.Enabled := true; StatusBar1.Panels[4].Text := ' '; end; end; end; procedure TStart.Button1Click(Sender: TObject); begin Startbildschirm.show; end; procedure TStart.Fehlermelden1Click(Sender: TObject); begin if ShellExecute(Application.Handle, 'open', PChar('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\Fehlermelde-Assistent.exe'), Nil, Nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); end; procedure TStart.DeutschDe1Click(Sender: TObject); var regist: TRegistry; Ini: TIniFile; begin label1.Caption:='Deutsch'; DeutschDe1.enabled := false; Image2.Visible := true; Image3.Visible := false; Image4.Visible := false; ShowMessage('Bitte starten Sie BrainTrainer neu, um die Einstellungen zu übernehmen!'); try Ini:=TIniFile.Create('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\language.ini'); Ini.WriteString('favoritelanguage','language',Label1.Caption); finally Ini.Free; end; {regist:=TRegistry.Create; try regist.RootKey:=HKEY_LOCAL_MACHINE; //voreingestellt ist HKEY_CURRENT_USER regist.OpenKey('SOFTWARE\E.T.-IT Software Corporation\BrainTrainer\2.0',true); //bei true wird Schlüssel erzeugt, wenn er noch nicht existiert regist.writestring('Language', 'German'); finally Free; end;} end; procedure TStart.N16Click(Sender: TObject); var regist: TRegistry; Ini: TIniFile; begin Label1.Caption:='English'; Image3.Visible := true; Image4.Visible := true; Image2.Visible := false; ShowMessage('Please restart BrainTrainer for changing the language!'); try Ini:=TIniFile.Create('C:\Program Files\E.T.-IT Software Corporation\BrainTrainer 2.0\language.ini'); Ini.WriteString('favoritelanguage','language',Label1.Caption); finally Ini.Free; end; { regist:=TRegistry.Create; try regist.RootKey:=HKEY_LOCAL_MACHINE; //voreingestellt ist HKEY_CURRENT_USER regist.OpenKey('SOFTWARE\E.T.-IT Software Corporation\BrainTrainer\2.0',true); //bei true wird Schlüssel erzeugt, wenn er noch nicht existiert regist.writestring('Language', 'English'); finally Free; end; } end; procedure TStart.NeuerBenutzer1Click(Sender: TObject); begin NeuerBenutzer.show; end; end. |
Re: Exception der Klasse EAccessViolation aufgetreten!
Man darf innerhalb einer Klasse nicht auf die globale Instanzvariable (der eigenen Klasse) zugreifen!
Das ist nur ein (aber sehr schwerwiegender) Fehler in deinem Sourcecode.
Delphi-Quellcode:
var
Startbildschirm: TStartbildschirm; implementation procedure TStartbildschirm.StartTimerTimer(Sender: TObject); begin Start.show; // FALSCH !!!!!! // Wer sagt denn, dass die Variable "Startbildschirm" wirklich auf ein gültiges Objekt zeigt ? // Es könnten auch mehrere Objekte der Klasse TStartbildschirm existieren // auch dann führt das zu schweren Fehlern Startbildschirm.Visible := false; // Richtig ! Visible := false; // eigentlich ganz einfach // if Start.Visible = true then // Schlecht // Richtig: Boolsche Ausdrücke werden direkt verwendet // Vergleich mit True kostet mehr Rechenzeit und kann unter bestimmten Umständen // zu Fehlern führen if Start.Visible then begin // Startbildschirm.StartTimer.Enabled := false ; StartTimer.Enabled := false ; // siehe oben end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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