/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
et andet problem med arrays
Fra : Gert Hansen


Dato : 04-02-04 12:57

En polygon er i Delphi termer "Array of TPoint"

Hvis man så skal have flere polygoner må det jo være en "Array of TPolygon"
hvor "type TPolygon = array of Tpoint"


Det er nu noget rod, så jeg tænkte at jeg smider polygonen i sin egen Class,
da jeg alligevel har en række funktioner som skal kører i klassen.

type TSlice = class(TObject)
private
orgPoly: array of TPoint;
public
procedure Create;
procedure Free;
procedure setOrgPoly(pol: array of TPoint);
end;

procedure TSlice.Create;
begin
setLength(orgPoly,0);
end;

procedure TSlice.setOrgPoly(pol: array of TPoint);
begin
setLength(orgPoly,length(pol));
orgPoly:=pol;
end;


Ligeså snart jeg prøver at lave en TSlice.create får jeg en
EAccessViolation. Jeg går naturligvis ud fra at det er Array'en inde i min
klasse som gør det. Hvordan omgår jeg problemet, så jeg kan have en dynamisk
række data inde i min klasse... ?


/GertH



 
 
David A. D. Konrad (04-02-2004)
Kommentar
Fra : David A. D. Konrad


Dato : 04-02-04 15:18

"Gert Hansen" <gert@hansen-net.dk> wrote in message
news:bvqmoh$tr6$1@news.cybercity.dk...

(...)
> Ligeså snart jeg prøver at lave en TSlice.create får jeg en
> EAccessViolation. Jeg går naturligvis ud fra at det er Array'en inde i min
> klasse som gør det. Hvordan omgår jeg problemet, så jeg kan have en
dynamisk
> række data inde i min klasse... ?

Din create-metode skal være en konstruktør, ikke en procedure. Et object af
typen "TSlice" er først allokeret, når det er blevet dannet med en
konstruktør. Prøv at lav følgende ændringer

public
CONSTRUCTOR create;

....

CONSTRUCTOR TSlice.Create;
begin
INHERITED;
setLength(orgPoly,0); //burde faktisk ikke være nødvendigt, eftersom et
objects variabler altid "nulstilles" når det kreeres...
end;

mintestslice:=TSlice.create;




Gert Hansen (05-02-2004)
Kommentar
Fra : Gert Hansen


Dato : 05-02-04 09:14

> public
> CONSTRUCTOR create;


Takker. Det er godt nok for lang tid siden jeg sidste har lavet klasser ;)



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409080
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste