/ 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
Objekt instantieret eller ej
Fra : René Jensen


Dato : 11-01-05 13:43

Hej,

Jeg har en procedure, der tager en variable-reference til et TBitmap
objekt som parameter. Kan jeg på nogen måde tjekke om det objekt jeg for
med er instantieret med TBitmap.Create-metoden?
Jeg har prøvet nedenstående, men den bliver bare skippet og programmet
crasher:

procedure GetBitmap(var Bitmap : TBitmap);
begin
if not Assigned(Bitmap) then
Bitmap := TBitmap.Create;
// Resterende kode, der manipulere Bitmap
end;

Med venlig hilsen,
René Jensen

 
 
Ukendt (11-01-2005)
Kommentar
Fra : Ukendt


Dato : 11-01-05 14:00

Jeg mener ikke, man kan være sikker. Et objekt starter sit liv med en
tilfældig værdi. Hvis det derefter har været anvendt (create + free), så
vil det have en anden værdi forskellig fra 0, men det er ikke
instantieret. Kun hvis man kalder freeandnil() eller sætter = nil, kan
man anvende din metode (læs hjælpefilens afsnit om assigned)

Hvis du ønsker at returnere en bitmap, så anvend

function GetBitmap: TBitmap;

Hvis du ønsker at manipulere en eksisterende bitmap, så anvend dit eget
forslag, men lad det være op til den, der kalder proceduren at oprette
objektet.

Du kan selvfølgelig også inkludere noget try-except kode.

hilsen
Uffe


"René Jensen" <not4u2know@privacy.org> wrote in message
news:cs0hho$1su$1@news.net.uni-c.dk...
> Hej,
>
> Jeg har en procedure, der tager en variable-reference til et TBitmap
> objekt som parameter. Kan jeg på nogen måde tjekke om det objekt jeg
for
> med er instantieret med TBitmap.Create-metoden?
> Jeg har prøvet nedenstående, men den bliver bare skippet og programmet
> crasher:
>
> procedure GetBitmap(var Bitmap : TBitmap);
> begin
> if not Assigned(Bitmap) then
> Bitmap := TBitmap.Create;
> // Resterende kode, der manipulere Bitmap
> end;
>
> Med venlig hilsen,
> René Jensen


Ken Madsen (06-04-2005)
Kommentar
Fra : Ken Madsen


Dato : 06-04-05 08:14

René Jensen wrote:
> Hej,
>
> Jeg har en procedure, der tager en variable-reference til et TBitmap
> objekt som parameter. Kan jeg på nogen måde tjekke om det objekt jeg for
> med er instantieret med TBitmap.Create-metoden?
> Jeg har prøvet nedenstående, men den bliver bare skippet og programmet
> crasher:
>
> procedure GetBitmap(var Bitmap : TBitmap);
> begin
> if not Assigned(Bitmap) then
> Bitmap := TBitmap.Create;
> // Resterende kode, der manipulere Bitmap
> end;
>
> Med venlig hilsen,
> René Jensen
Hej René,

Hvis objectet har været instantieret før skal du ikke bruge object.free
men freendnil(object)

Ellers vil referencen stadig findes og du vil få en fejl når du prøver
at refere til et object giver en adresse på assigned(object)

Mvh Ken Madsen

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

Månedens bedste
Årets bedste
Sidste års bedste