Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi 5: Problem mit Create bei Ini-Datei... (https://www.delphipraxis.net/134665-delphi-5-problem-mit-create-bei-ini-datei.html)

Fussel9 26. Mai 2009 18:27


Delphi 5: Problem mit Create bei Ini-Datei...
 
Hi, dickes Problem:
Ich bin noch Schüler und habe deshalb nur Delphi5...
Ich wollte für ein Objekt eine Ini-Datei anlegen, damit ich Integer Werte beim Schließen speichern und beim Laden einlesen kann, das Programm soll transportabel sein, daher Ini...

jetzt bekomme ich aber immer direckt nen Fehler wenn ich folgende Zeile rein setze:

Delphi-Quellcode:
constructor Create(const FileName String);
die Zeile ist original aus der Delphi Hilfe... Hab auch schon String durch Integer ersetzt aber selbes Problem, es geht ihm gar nicht um String/Integer er sagt: Undefinierter Bezeichner Create...

Bei der Gelegenheit: Ist es entscheident wo der constructor steht?


Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Image1: TImage;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

var ax,ay :Integer;

var a : Integer;

{$R *.DFM}
constructor Create(const FileName String);

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.visible:=FALSE;
Button2.visible:=FALSE;
Button3.visible:=FALSE;
Button4.visible:=TRUE;
Button5.visible:=FALSE;
Button6.visible:=FALSE;
Timer1.Enabled:=True;
ax:=543;
ay:=303;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Button1.visible:=FALSE;
Button2.visible:=FALSE;
Button3.visible:=FALSE;
Button4.visible:=FALSE;
Button5.visible:=TRUE;
Button6.visible:=FALSE;
Timer1.Enabled:=True;
ax:=591;
ay:=351;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Button1.visible:=FALSE;
Button2.visible:=FALSE;
Button3.visible:=FALSE;
Button4.visible:=FALSE;
Button5.visible:=FALSE;
Button6.visible:=TRUE;
Timer1.Enabled:=True;
ax:=623;
ay:=383;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var x , y :Integer;
begin
Randomize;
x:=Random(ax);
y:=Random(ay);
if Button4.visible=True then
begin
  Button4.Left:=x;
  Button4.Top:=y;
end
else
if Button5.visible=True then
begin
  Button5.Left:=x;
  Button5.Top:=y;
end
else
begin
  Button6.Left:=x;
  Button6.Top:=y;
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Timer1.Enabled:=False;
ShowMessage('You Won!');
Button1.visible:=TRUE;
Button2.visible:=TRUE;
Button3.visible:=TRUE;
Button4.visible:=FALSE;
Button5.visible:=FALSE;
Button6.visible:=FALSE;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Timer1.Enabled:=False;
ShowMessage('You Won!');
Button1.visible:=TRUE;
Button2.visible:=TRUE;
Button3.visible:=TRUE;
Button4.visible:=FALSE;
Button5.visible:=FALSE;
Button6.visible:=FALSE;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Timer1.Enabled:=False;
ShowMessage('You Won!');
Button1.visible:=TRUE;
Button2.visible:=TRUE;
Button3.visible:=TRUE;
Button4.visible:=FALSE;
Button5.visible:=FALSE;
Button6.visible:=FALSE;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
a := ReadInteger('Abschnitt1','Anzahl',0);
a := a+1;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ini.WriteInteger('Abschnitt1','Anzahl',a);
end;

end.

DeddyH 26. Mai 2009 18:31

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Der Konstruktor muss schon in der Klassendeklaration deklariert werden. Aber Du könntest doch das FormCreate-Ereignis benutzen, um die Ini zu erzeugen und diese im OnDestroy-Ereignis wieder freigeben.

Fussel9 26. Mai 2009 18:38

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Könntest du mir das bitte genauer erklären, kenne mich da gar nicht aus...

soll ich das einfach nur vor implementation setzen oder das hinter type???

bzw. meinst du gar nicht diese unit? aber wenn nicht wie springe ich in Delphi 5?

quendolineDD 26. Mai 2009 18:43

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Um den Konstruktor nutzen bzw. zu verändern zu können musst du das in der Implementation der Klasse ändern. Quasi dir eine eigene Klasse erzeugen.
TForm stellt jedoch genug Optionen zur Verfügung, welche du nutzen kannst. Die Ini-Datei kannst du zum Beispiel im OnCreate-Ereignis deiner Form nutzen und diese im OnDestroy-Ereignis wieder freigeben.

DeddyH 26. Mai 2009 18:43

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Delphi-Quellcode:
type
  TMyClass = class
  private
    //...
  protected
    //...
  public
    constructor Create(Parameter: Typ); //hier wird der Konstruktor deklariert
  end;

implementation

//und hier implementiert
constructor TMyClass.Create(Parameter: Typ);
begin
  inherited Create;
  //weiterer Code
end;
Ein Konstruktor ist eine spezielle Methode einer Klasse, daher muss er auch zu dieser Klasse gehören und kann nicht einfach irgendwo in den Quelltext geschrieben werden.

Helmi 26. Mai 2009 18:47

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Hallo,

ich denke Fussel braucht etwas so was hier

Satty67 26. Mai 2009 18:51

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Schießt Ihr nicht alle etwas weit über das Ziel hinaus?

Der Thread-Starter will doch nur auf eine INI-Datei zugreifen, oder?
Delphi-Quellcode:
uses
  ...INIFiles...

[...Form...]
  private
    { Private-Deklarationen }
    INI : TINIFile;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

TForm1.FormCreate(Sender: TObject);
begin
  INI := TIniFile.Create('myInifile.ini'); // nur mal so als Beispiel
[...]
€: OK, Helmi sieht es zum Glück auch so... wieso hatte ich keine rote Box?
€2: DeddyH erst auch, ist aber dann auf den anderen Zug aufgesprungen

quendolineDD 26. Mai 2009 18:52

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Ihm fehlt ja aber jegliches grundlegendes Verständnis für den Aufbau einer Klasse und der Deklaration von Methoden und Funktionen.
Zitat:

Schießt Ihr nicht alle etwas weit über das Ziel hinaus?
Dito.
Das meinte ich ja auch oben als ich DeddyH's Beitrag verdeutlichte.

DeddyH 26. Mai 2009 18:59

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
Ich wollte ihm doch nur klarmachen, was ein Konstruktor ist. Dass er gar keinen braucht, steht doch schon in meiner ersten Antwort.

Satty67 26. Mai 2009 19:02

Re: Delphi 5: Problem mit Create bei Ini-Datei...
 
War ja auch auf keinen Fall böse gemeint, aber in Post #3 siehst Du, was Du angerichtet hast :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.
Seite 1 von 3  1 23      

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