AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bitmap als Zeiger - Ich versteh es nicht !
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap als Zeiger - Ich versteh es nicht !

Ein Thema von meisteralex · begonnen am 20. Dez 2005 · letzter Beitrag vom 22. Dez 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#11

Re: Bitmap als Zeiger - Ich versteh es nicht !

  Alt 21. Dez 2005, 09:05
Kleines Beispiel:
Delphi-Quellcode:
function MyFunc (AValue: String): TBitmap;
var
  MyVar: Boolean;
begin

  //Etwas machen

  Result := TBitmap.Create;

  Result.Machwas;

end;

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

var
  TempBmp, Bmp1, Bmp2, Bmp3, Bmp4: TBitmap;
begin
  Bmp1:= TBitmap.Create;
  Bmp2:= TBitmap.Create;
  Bmp1.LoadFromFile('C:\bild1.bmp');
  Bmp2.LoadFromFile('C:\bild2.bmp');

  TempBmp := MyFunc ('Ein Bitmap bitte');

  Bmp3 := TempBmp; // Addresse zugewiesen - Bmp3 und TempBmp zeigen auf dasselbe Bitmap

  Bmp4 := TBitmap.Create;
  Bmp4.Assign (TempBmp); // Bitmap Kopiert

  // Hier zeigen TempBmp und Bmp3 auf das zurückgegebene Bitmap und Bmp4 zeigt auf eine Kopie dessen.

  TempBmp := MyFunc ('Ein anderes Bitmap bitte'); // Kein Leak, wel Addresse noch in Bmp3
  // Bmp3 := nil; // Leak
  FreeAndNil (Bmp3);
Ich hoffe, ich konnte dir helfen
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#12

Re: Bitmap als Zeiger - Ich versteh es nicht !

  Alt 21. Dez 2005, 09:40
Hallo,
Zitat von jfheins:
Kleines Beispiel:
Delphi-Quellcode:
...
Bmp4.Assign (TempBmp); // Bitmap Kopiert
...
Das wird so nicht funktionieren, wenn Du Bmp4 nicht initialisierst.

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#13

Re: Bitmap als Zeiger - Ich versteh es nicht !

  Alt 21. Dez 2005, 09:42
Das sollte nicht passieren ...
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#14

Re: Bitmap als Zeiger - Ich versteh es nicht !

  Alt 22. Dez 2005, 10:34
@meisteralex:
Es ist schon richtig gesagt worden: es ist nicht sehr elegant eine Instanz als Rückgabewert einer Funktion zu verwenden.

Erstell doch einfach außerhalb der Funktion/Prozedur alle notwendigen Bitmaps, dann übergib' sie der Funktion/Prozedur als Zeiger.
Delphi-Quellcode:
procedure BmpEncode(Bitmap1,Bitmap2,Bitmap3:TBitmap);
begin
  // macht was mit Bitmap1 und Bitmap2 und legt das Ergebnis in Bitmap3
end;
So sollte es ohne Probleme funktionieren.

Eleganter finde ich diese Prozedur, wenn man ScanLine nicht braucht und stattdessen mit den relativ schnellen API-Funktionen arbeitet:
Delphi-Quellcode:
procedure EncodeDCs(SrcDc1,SrcDC2,DestDC:HDC);
begin
  // macht was mit SrcDC1 und SrcDC2 und legt das Ergebnis in DestDC
end;

// Aufruf:
EncodeDCs(Bitmap1.Canvas.Handle,Bitmap2.Canvas.Handle,Bitmap3.Canvas.Handle);
Sinnvoll bei sprachübergreifender Programmierung.
  Mit Zitat antworten Zitat
meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#15

Re: Bitmap als Zeiger - Ich versteh es nicht !

  Alt 22. Dez 2005, 14:56
jo hab das prinzip jetzt verstanden -> dank euch, also vielen dank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.
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