Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zugriffsverletzung bei Zugriff auf 2. Unit? Wo ist das Problem? (https://www.delphipraxis.net/188820-zugriffsverletzung-bei-zugriff-auf-2-unit-wo-ist-das-problem.html)

majornudelholz 10. Apr 2016 16:20

Delphi-Version: XE7

Zugriffsverletzung bei Zugriff auf 2. Unit? Wo ist das Problem?
 
Hallo!

Ich programmiere mir grade einen sogenannten "Angriffsplaner" für ein Strategiespiel. Daher ist es wichtig "timen" zu können, weshalb ich in mein bisher laufendes Programm eine Uhr laufen lassen möchte, die die Zeit in Millisekunden genau angibt. Beim Klicken eines Feldes/Buttons im MainMenu-Bereich soll sich also eine Uhr mit eben diesen Anforderungen auf einem neuen Formular öffnen.

Das alles habe ich bisher hingekriegt, nur jetzt scheitert mein Programm daran, dass es, wenn es den "Timer" (die Uhr mit den Millisekunden) über die MainMenu-Leiste öffnen soll eine Zugriffsverletzung als Fehler ausgibt... Vielleicht findet ihr ja den Fehler bzw. könnt mir sagen, was ich falsch gemacht habe.

Die Hauptunit mit dem Angriffsplaner:
Delphi-Quellcode:
[CODE]unit UAngriffsplanerH;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls,
  Vcl.Menus, System.UITypes, UTimer;

type
  TFAngriffsplaner = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    BalloonHint1: TBalloonHint;
    Panel3: TPanel;
    Panel4: TPanel;
    DatePicker: TDateTimePicker;
    Button1: TButton;
    ListBox1: TListBox;
    TimePicker: TDateTimePicker;
    ComboBox1: TComboBox;
    NowTimer: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Einstellungen1: TMenuItem;
    Bearbeiten1: TMenuItem;
    zurcksetzen1: TMenuItem;
    imer1: TMenuItem;
    Showmessages1: TMenuItem;
    An1: TMenuItem;
    Aus1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    function GetRunTime(sx, sy, zx, zy:integer):real;
    procedure FormCreate(Sender: TObject);
    procedure NowTimerTimer(Sender: TObject);
    function SecondsToTime(Seconds: Integer): TDateTime;
    procedure zurcksetzen1Click(Sender: TObject);
    procedure An1Click(Sender: TObject);
    procedure Aus1Click(Sender: TObject);
    procedure imer1Click(Sender: TObject);
  private
    Datum,Zeit,DateTimeA,StartTime : TDateTime;
    combxi,Seconds,Minutes,Hours,Days,RunTime : Integer;
    unitspeed : Real;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FAngriffsplaner: TFAngriffsplaner;
  FTimer: TFTimer;

implementation

{$R *.dfm}[/CODE]
(unter implementation folgt natürlich was, doch da liegt 100% nicht der Fehler)

Meine Timer-Unit:
Delphi-Quellcode:
[CODE]unit UTimer;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;

type
  TFTimer = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FTimer: TFTimer;

implementation

{$R *.dfm}[/CODE]
Vielen Dank, für jede Anregung!!!

Zacherl 10. Apr 2016 16:24

AW: Zugriffsverletzung bei Zugriff auf 2. Unit? Wo ist das Problem?
 
Zitat:

Zitat von majornudelholz (Beitrag 1335178)
unter implementation folgt natürlich was, doch da liegt 100% nicht der Fehler

Ich wette dagegen :stupid: Her mit dem Code!

Fritzew 10. Apr 2016 16:33

AW: Zugriffsverletzung bei Zugriff auf 2. Unit? Wo ist das Problem?
 
Da gibt es in beiden Units die Globale Variable fTimer??

majornudelholz 10. Apr 2016 16:51

AW: Zugriffsverletzung bei Zugriff auf 2. Unit? Wo ist das Problem?
 
Oh mein Gott. :roll:

Du hast Recht, das war mein Fehler mit den Variablen.. Danke dir!

Fritzew 10. Apr 2016 17:06

AW: Zugriffsverletzung bei Zugriff auf 2. Unit? Wo ist das Problem?
 
:) Aber wieso benutzt Du globale Variablen? Die sollte man so weit es nur möglich ist vermeiden!


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