Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Tpbject (https://www.delphipraxis.net/137262-problem-mit-tpbject.html)

R2009 17. Jul 2009 09:36


Problem mit Tpbject
 
Hi,
hab wieder einmal ein Problem mit einer selbst konstuierten Klasse.

Delphi-Quellcode:
unit Uarray;

interface
uses math;
TYPE
  Tarray=class(tobject)
  private
    arr:array of integer;
    maximum,minimum:integer;
    procedure setl(a:integer);
    function Maxa:integer;
    function Mina:integer;
  public
    { Public-Deklarationen }
    procedure assign(arr0:array of integer);
  end;
implementation

procedure Tarray.assign(arr0:array of integer);
var n:integer;
begin
  setl(length(arr0));
  For n:=0 to length(arr0)-1 do arr[n]:=arr0[n];
  Maxa;
  MinA
end;

procedure Tarray.setl(a:integer);
begin
  setlength(arr,a);
end;

function Tarray.Maxa:integer;
begin
  maximum:=MaxIntValue(arr);
end;

function Tarray.Mina:integer;
begin
  minimum:=MinIntValue(arr);
end;


end.

procedure TForm1.Button1Click(Sender: TObject);
var s:tarray;t:array[1..1000] of integer;
begin
  s.Create;
  s.assign(t);
  s.Free;
end;
Sobald ich die Form schliesse (habe vorher den Button gedrückt) bekomme ich eine Zugriffsverletzung.
Kommentiere ich s.assign(t); aus so verschwindet mein Button von der Hauptform, sobald ich ihn gedrückt habe....
Versteh überhaupt nichts mehr.

Viele Grüsse!

jfheins 17. Jul 2009 09:41

Re: Problem mit Tpbject
 
Delphi-Quellcode:
s := TArray.Create();
:zwinker:

himitsu 17. Jul 2009 09:42

Re: Problem mit Tpbject
 
wie erzeugt man ein Object?

Delphi-Quellcode:
s.Create;
so jedenfalls nicht :zwinker:

[edit]
menno :cry:

worker 17. Jul 2009 11:55

Re: Problem mit Tpbject
 
Wäre soetwas nicht auch beim debuggen aufgefallen? Dafür ist es gedacht.

R2009 17. Jul 2009 13:00

Re: Problem mit Tpbject
 
Hi,

ich bin ein solchiges Rindvieh!

Vielen Dank!
Worker: der Debugger meckert überhaupt nicht, ansonsten hätte ich den Beitrag nicht geschrieben.

worker 17. Jul 2009 14:04

Re: Problem mit Tpbject
 
Zitat:

Zitat von R2009
ich bin ein solchiges Rindvieh!

Zitat:

Zitat von R2009
Worker: der Debugger meckert überhaupt nicht, ansonsten hätte ich den Beitrag nicht geschrieben.

Ich schrieb auch nicht, dass der Debugger meckert; Du musst meine Sätze mal richtig lesen!
Ich schrieb, dass dieses Problem beim debuggen hätte auffallen müssen, wenn man sich das Objekt, das man vermeintlich erzeugt hat, im Debugger anschaut.

Hättest Du die Maus über die Objektvariable geführt, dann hättest Du gesehen, dass Dein Objekt aus einer willkürlichen Anzahl willkürlicher Werte besteht - und da kann dann ja wohl etwas bei der Instanziierung nicht ganz korrekt gelaufen sein, oder?!

Hier findest Du übrigens ein nettes Tutorial für Anfänger; und Fortgeschrittene zum Thema.

himitsu 17. Jul 2009 14:20

Re: Problem mit Tpbject
 
der Debugger würde hier nur meckern (wäre schön wenn das ginge),
wenn man die Funktion bzw. den Constructor so markieren könnte/würde,
daß diese nicht über eine Objekt-Variable aufrufbar wäre.

Muetze1 17. Jul 2009 14:33

Re: Problem mit Tpbject
 
Ich kann dir nur empfehlen ein const vor dem Array Parameter im Assign() zu schreiben, damit Delphi beim Aufruf nicht erstmal dein riesiges Array kopieren muss...

SirThornberry 17. Jul 2009 16:43

Re: Problem mit Tpbject
 
@R2009: Könntest du dem Thema bitte einen aussagekräftigeren Titel geben der das Problem wenigstens ansatzweise beschreibt? :)

R2009 18. Jul 2009 11:35

Re: Problem mit Tpbject
 
Nein,
1.) das Problem war zu Anfang überhaupt nicht fassbar, somit ist der Titel in Ordnung.
2.) Das Problem hat sich erledigt.
3.) Ich weiss nicht wie man den Titel ändert.

Viele Grüsse


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.
Seite 1 von 2  1 2      

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