![]() |
Re: "Objekt: Keller" geht nicht...
nach interface eventuell noch nen uses-Block unterbringen?
Delphi-Quellcode:
eventuell noch mehr, ich weiß jetzt nicht ausm Kopf, welche Units mind. notwendig sind.
uses Classes, Windows;
|
Re: "Objekt: Keller" geht nicht...
Besser so:
Delphi-Quellcode:
Grüße vom marabu
TKeller = class
FKeller: array of string; constructor create; procedure push(m:string); procedure pop; function top:string; end; |
Re: "Objekt: Keller" geht nicht...
Hi,
sollte die Membervariable Keller nicht lieber vom Typ Array of string sein ? Du willst doch Strings speichern. Nur mal so... [Edit] hrr, marabu war schneller [/Edit] Gruss |
Re: "Objekt: Keller" geht nicht...
Delphi-Quellcode:
So, jetzt geht's. Gracias!!! :party: :party: :party:
unit Keller;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TKeller = class FKeller: array of string; constructor create; procedure push(m:string); procedure pop; function top:string; end; var n: integer; oKeller: TKeller; implementation constructor TKeller.create; begin inherited create; n:=1; end; procedure TKeller.push(m:string); begin inc(n); setlength(FKeller,n); FKeller[n-1] := m; end; procedure TKeller.pop; begin dec(n); setlength(FKeller,n); end; function TKeller.top:string; begin result := FKeller[n-1]; end; end. |
Re: "Objekt: Keller" geht nicht...
n als globale Variable.. wird sicher lustig, wenn man zwei Instanzen der Klasse hat.. bau das mal lieber mit in die Klasse rein.
|
Re: "Objekt: Keller" geht nicht...
Zitat:
|
Re: "Objekt: Keller" geht nicht...
Sorry, ist immer noch nicht fertig. Jetzt geht Folgendes nicht:
Delphi-Quellcode:
Hat das was mit dem n zu tun? Und wie kann ich's so deichseln, dasses geht?
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Keller, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; Button3: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Keller: TKeller; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Keller:=TKeller.create end; procedure TForm1.Button1Click(Sender: TObject); begin Keller.push('m'); Label1.Caption:=Keller.top; end; procedure TForm1.Button2Click(Sender: TObject); begin Keller.push('X'); Label1.Caption:=Keller.top; end; procedure TForm1.Button3Click(Sender: TObject); begin Keller.pop; Label1.Caption:=Keller.top; end; end. Danke schonmal jedenfalls. €dit: bei 0 starten lassen kann ich nicht wegen
Delphi-Quellcode:
constructor TKeller.create;
begin inherited create; n:=1; FKeller[n-1] := 's'; // <<<< undefiniert bei n=0, oder? end; |
Re: "Objekt: Keller" geht nicht...
Was für ein Fehler meldet der Compiler?
|
Re: "Objekt: Keller" geht nicht...
Fehler:
--------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00403E8C in Modul 'Project1.exe'. Schreiben von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- |
Re: "Objekt: Keller" geht nicht...
Du hast den Array als dynamischen array deklariert. Du musst ihn also dimensionieren (setLength())
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 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