|
Antwort |
Registriert seit: 27. Mai 2007 Ort: Hamburg 284 Beiträge Delphi XE2 Enterprise |
#1
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... 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 ...)
Gruß Torben
|
Zitat |
Registriert seit: 27. Okt 2005 Ort: Düsseldorf 369 Beiträge Delphi XE5 Professional |
#2
Bescheid!
Ohne Quelltext wird das wohl ziemlich schwer
Richard Mahr
|
Zitat |
Registriert seit: 3. Jan 2007 Ort: Dresden 3.443 Beiträge Delphi 7 Enterprise |
#3
Im FormCreate sind die Komponenten des Formulars noch nicht erzeugt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
|
Zitat |
(Moderator)
Registriert seit: 23. Sep 2003 Ort: Bockwen 12.235 Beiträge Delphi 2006 Professional |
#4
Zitat von sirius:
Im FormCreate sind die Komponenten des Formulars noch nicht erzeugt.
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's |
Zitat |
Registriert seit: 10. Jun 2004 Ort: Garching (TUM) 4.579 Beiträge |
#5
Zitat:
PS: Nach der Exception war vor "Application.CreateForm(TStart, Start);" ein Pfeil (vllt. hilft das ja jemandem ...)
|
Zitat |
Registriert seit: 27. Mai 2007 Ort: Hamburg 284 Beiträge Delphi XE2 Enterprise |
#6
Zitat von SirThornberry:
An den Fragesteller: In welcher Zeile bekommst du diese Zugriffsverletzung? Hast du schon mal Haltepunkte gesetzt und bist die Anweisungen einzeln durchgegangen?
Gruß Torben
|
Zitat |
Registriert seit: 27. Mai 2007 Ort: Hamburg 284 Beiträge Delphi XE2 Enterprise |
#7
Zitat von jfheins:
Zitat:
PS: Nach der Exception war vor "Application.CreateForm(TStart, Start);" ein Pfeil (vllt. hilft das ja jemandem ...)
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.
Gruß Torben
|
Zitat |
Registriert seit: 2. Mär 2004 5.508 Beiträge Delphi 5 Professional |
#8
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;
Andreas
|
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |