AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Exception der Klasse EAccessViolation aufgetreten!
Thema durchsuchen
Ansicht
Themen-Optionen

Exception der Klasse EAccessViolation aufgetreten!

Ein Thema von T.E. · begonnen am 31. Jul 2007 · letzter Beitrag vom 31. Jul 2007
Antwort Antwort
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#1

Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 16:28
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:
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.
Hier habe ich dann noch mal den Quelcode der Projektdatei:

Delphi-Quellcode:
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.
Da das 19 Formulare sind hab hier halt nur die zwei wichtigsten genommen!
PS: Nach der Exception war vor "Application.CreateForm(TStart, Start);" ein Pfeil (vllt. hilft das ja jemandem ...)
Gruß Torben
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 16:29
Bescheid!

Ohne Quelltext wird das wohl ziemlich schwer
Richard Mahr
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 16:55
Im FormCreate sind die Komponenten des Formulars noch nicht erzeugt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 17:19
Zitat von sirius:
Im FormCreate sind die Komponenten des Formulars noch nicht erzeugt.
Die Aussage ist falsch. Im OnCreate des Formulars sind die Komponenten sehr wohl schon 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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 17:23
Zitat:
PS: Nach der Exception war vor "Application.CreateForm(TStart, Start);" ein Pfeil (vllt. hilft das ja jemandem ...)
Dann poste mal bitte den Quellcode des Formulars "Start", oder besser noch: Gehe per Einzelschritt durch den Startvorgang und poste die Zeilen, in denen der Fehler auftritt
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 17:32
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?
Es ist die 5-te Zeile des Zweiten Quelltextes (nach dem begin gezälht)Ich habe die Zeile mal separiert!
Gruß Torben
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 17:36
Zitat von jfheins:
Zitat:
PS: Nach der Exception war vor "Application.CreateForm(TStart, Start);" ein Pfeil (vllt. hilft das ja jemandem ...)
Dann poste mal bitte den Quellcode des Formulars "Start"
Delphi-Quellcode:
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 = 'Englishthen
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.
So hier der Quellcode aber ich check das noch mal mit den Haltepunkten durch!!
Gruß Torben
  Mit Zitat antworten Zitat
shmia

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

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 17:51
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
  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 01:02 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