Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unbekannte Zugriffsverletzung (https://www.delphipraxis.net/116142-unbekannte-zugriffsverletzung.html)

STS301 24. Jun 2008 08:54


Unbekannte Zugriffsverletzung
 
hi

ein Freund von mir versucht gerade ein Hangman Programm zu machen und es soll am Anfang ein Logo zeigen, nach einer gewissen Zeit soll er dann das Hauptprogramm starten, nur es zeigt dan eine Zugriffsverletzung an. Mein Freund, mein Lehrer und ich stehen auf der Leitung.

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg;

type
  TFStart = class(TForm)
    IBild: TImage;
    TZeit: TTimer;
    procedure TZeitTimer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    time: Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FStart: TFStart;

implementation

uses Hangman_u;

{$R *.dfm}

procedure TFStart.FormCreate(Sender: TObject);
begin
  time:= 1;
  TZeit.enabled:= true;
end;

procedure TFStart.TZeitTimer(Sender: TObject);
begin
  dec(time);

  if time= 0 then

    begin
      TZeit.Enabled:= false;
      FStart.Hide;
      FHangman.Show;
    end;

end;
FStart ist die Logo Unit
FHangman das Hauptprogramm

sirius 24. Jun 2008 08:57

Re: Unbekannte Zugriffsverletzung
 
Und wie sieht die DPR aus? Wo kommt der Fehler?

Sherlock 24. Jun 2008 08:58

Re: Unbekannte Zugriffsverletzung
 
...und FHangman ist zum Zeitpunkt des Show bereits erzeugt worden?


Sherlock

STS301 24. Jun 2008 09:04

Re: Unbekannte Zugriffsverletzung
 
so sieht die DPR aus

Delphi-Quellcode:
uses
  Forms,
  Hangman_u in 'Hangman_u.pas' {FHangman},
  Start_u in 'Start_u.pas' {FStart};

{$R *.res}

begin
  Application.Initialize;
  Application.Title := 'Hangman';
  Application.CreateForm(TFStart, FStart);
  Application.Run;
end.

messie 24. Jun 2008 09:06

Re: Unbekannte Zugriffsverletzung
 
Zitat:

Zitat von STS301
so sieht die DPR aus

Delphi-Quellcode:
uses
  Forms,
  Hangman_u in 'Hangman_u.pas' {FHangman},
  Start_u in 'Start_u.pas' {FStart};

{$R *.res}

begin
  Application.Initialize;
  Application.Title := 'Hangman';
  Application.CreateForm(TFStart, FStart);
  Application.Run;
end.

Zuerst muss das Hauptprogramm erzeugt werden. Am besten Du trägst es unter Projektoptionen als "automatisch erzeugt" ein, dann wird es in der dpr schon erzeugt.

Grüße, Messie

DeddyH 24. Jun 2008 09:09

Re: Unbekannte Zugriffsverletzung
 
So etwas hatten wir gestern schon hier

STS301 24. Jun 2008 09:57

Re: Unbekannte Zugriffsverletzung
 
naja, jetzt habe ich es so
Delphi-Quellcode:
procedure TFStart.TZeitTimer(Sender: TObject);
begin
  dec(time);

  if time= 0 then

    begin
      TZeit.Enabled:= false;
      FStart.Hide;
      try
        FHangman := FHangman.Create(Application);
        FHangman.Show;
      finally
        FHangman.Release;
      end;
    end;

end;
das Problem bei "automatisch erzeugen" ist nur dass er mir das Start und Hangman gleichzeitig anzeigt.

DeddyH 24. Jun 2008 09:59

Re: Unbekannte Zugriffsverletzung
 
Hast Du den verlinkten Thread auch komplett durchgelesen?

Aurelius 24. Jun 2008 10:03

Re: Unbekannte Zugriffsverletzung
 
Vielleicht wäre ja auch folgender Thread interessant ;)

http://www.delphipraxis.net/internal...ect.php?t=9679

RavenIV 24. Jun 2008 10:09

Re: Unbekannte Zugriffsverletzung
 
Versuch es doch einfach mal so:
Delphi-Quellcode:
procedure TFStart.TZeitTimer(Sender: TObject);
begin
  dec(time);

  if time= 0 then

    begin
      TZeit.Enabled:= false;
      FStart.Hide;
//      try
        if not Assigned(FHangman) then
        begin
          FHangman := FHangman.Create(Application);
        end;
        FHangman.Show;
//      finally
//        FHangman.Release;
//      end;
    end;

end;
Und in FStart.FormClose dann:
FHangman.Free oder FHangman.Release

STS301 24. Jun 2008 10:13

Re: Unbekannte Zugriffsverletzung
 
@deddyH

ja, das in der Projektdatei habe ich auch gemacht, hat aber nichts genützt

@xX0815Xx

ja so geht es auch, will es aber auch gerne so schaffen, weil ich habe es bei meinem Schülerplaner ja auch geschafft, ohne Probleme

@Raven, so funktioniert es auch nicht

Er marktiert mir dann diese Zeile
Delphi-Quellcode:
FHangman := FHangman.Create(Application);

DeddyH 24. Jun 2008 10:16

Re: Unbekannte Zugriffsverletzung
 
Zitat:

Delphi-Quellcode:
FHangman := FHangman.Create(Application);

-->
Delphi-Quellcode:
FHangman := THangman.Create(Application);

STS301 24. Jun 2008 10:19

Re: Unbekannte Zugriffsverletzung
 
falsch -->

Delphi-Quellcode:
FHangman := TFHangman.Create(Application);
so funktioniert es
danke an alle :thumb:

RavenIV 24. Jun 2008 10:20

Re: Unbekannte Zugriffsverletzung
 
Zitat:

Zitat von STS301
@Raven, so funktioniert es auch nicht

Er marktiert mir dann diese Zeile
Delphi-Quellcode:
FHangman := FHangman.Create(Application);

Ich hab schon vorrausgesetzt, dass Du ein Wenig mitdenkst.
So macht das Helfen keinen Spass, wenn man Dir wirklich alles vorbeten muss. :-(


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