Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Nil nach TForm.Create(nil) ?? (https://www.delphipraxis.net/145965-nil-nach-tform-create-nil.html)

HannsW 11. Jan 2010 16:17


Nil nach TForm.Create(nil) ??
 
Hallo Gemeinde

heute stehe ich wie vernagelt vor einem Problem.
Hier ein Auszug aus meiner Unit RgDruck,pas
Delphi-Quellcode:
unit RgDruck;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGrids, Db, DBTables, Printers, inifiles,
  ExtCtrls, Spin, DBCtrls, Calendar, ComCtrls, DruckDaten;
 
  {
     diverse Type deklarationen
  }

type
TRgDruckForm = class(TForm)
.....
  published
  private
.... public
end;

var
  RgDruckForm: TRgDruckForm;

implementation

{......}

procedure TRgDruckForm.FormShow(Sender: TObject);
var
  iniFile: TIniFile;
  cTemp: String;
begin
     {..dieser BLock läuft durch / OK }


   Screen.Cursor := crHourGlass;
   iniFileName := '\auftrag3.ini';

   // die Userabhängigen infos
   iniFile := Tinifile.create(iniFileName);
   try
   // nach dem Try ist RgDruckForm NIL und schmeißt ne Execption
      RgDruckForm.Top := iniFile.ReadInteger('RgDruckForm','Top', 100);

      {weitere iniFile.Read.. }
    FINALLY
          iniFile.free;
     end;
   Screen.Cursor := crDefault;

end;
Ich rufe diese Klasse in der Unit DruckenMain.pas ( mit TMainForm = class (TForm)
nach Anklicken des entspr. Menupunktes wie folgt auf:
Delphi-Quellcode:
procedure TMainForm.Rechnung1Click(Sender: TObject);
var
   frmRgDruck: TRgDruckForm;
begin
     frmRgDruck := TRgDruckForm.create(nil);
     frmRgDruck.druckTyp := 'Rechnung';
     frmRgDruck.OpenDatabases;
     frmRgDruck.ShowModal;
end;
Nützen dies Infos, um mir weiterhelfen zu können?

Danke schon mal, Hanns

p.s.
das Schreiben der Property druckTyp klappt;
in frmRgDruck.OpenDatabases; wird nur ein ShowMessage() aufgerufen

Bernhard Geyer 11. Jan 2010 16:24

Re: Nil nach TForm.Create(nil) ??
 
Delphi-Quellcode:
      ...
      RgDruckForm.Top := iniFile.ReadInteger('RgDruckForm','Top', 100);
      ...
Autsch. Zugriff auf die globale Variable RgDruckForm die u.U. nicht initialisiert ist. Am besten die Zeilen

Delphi-Quellcode:
var
  RgDruckForm: TRgDruckForm;
in unit RgDruck löschen um hier diese Fehlerquelle zu eliminieren.

HannsW 11. Jan 2010 18:34

Re: Nil nach TForm.Create(nil) ??
 
:wall: AUA!!

Diesen Fehler habe ich schon mal gemacht.

Danke, nach anpassen des Quelltextes
auf
Delphi-Quellcode:
     Top := iniFile.ReadInteger('frmIniFile','Top', 100);
Klappt alles wunderbar.
Danke für die Nase drauf stupsen!
Hanns


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf