AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer, ist er nun da oder nicht?!

Ein Thema von phlux · begonnen am 29. Mai 2004 · letzter Beitrag vom 31. Mai 2004
Antwort Antwort
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#1

Pointer, ist er nun da oder nicht?!

  Alt 29. Mai 2004, 00:41
Hoi!
Also ich hab folgenden Code (es handelt sich dabei um einen Ausschnitt um Drag and Drop mit OLE zu realisieren):
Delphi-Quellcode:
function TMainForm.Drop(const dataObj: IDataObject;
  grfKeyState: Longint;
  pt: TPoint;
  var dwEffect: Longint): HResult;
var
  aFmtEtc: TFORMATETC;
  aStgMed: TSTGMEDIUM;
  pData: PChar;
begin
  {Make certain the data rendering is available} 
  if (dataObj = nil) then
    raise Exception.Create('IDataObject-Pointer is not valid!');
  with aFmtEtc do
  begin
    cfFormat := CF_TEXT;
    ptd := nil;
    dwAspect := DVASPECT_CONTENT;
    lindex := -1;
    tymed := TYMED_HGLOBAL;
  end;
  {Get the data} 
  OleCheck(dataObj.GetData(aFmtEtc, aStgMed));
  try
    // ROT HIER :D [color=red]
    {Lock the global memory handle to get a pointer to the data} 
    pData := GlobalLock(aStgMed.hGlobal);
    { Replace Text } 
    Memo1.Text := pData;
  finally
    {Finished with the pointer} 
    GlobalUnlock(aStgMed.hGlobal);
    {Free the memory} 
    ReleaseStgMedium(aStgMed);
    // ROT HIER ENDE ;) [/color]
  end;
  Result := S_OK;
end;
So, jetzt will ich den Pointer als Funktionswert zurückgeben was denke ich auch kein Problem ist, Unmut macht mir nur der Rot markierte Teil, da wird mit GlobalLock dieses "Global Memory" gelockt, dann wird dem Memo den Pointer mit dem Text zugewiesen, finalerweise wird das "Global Memory" wieder ungelockt, und dann wieder freigegeben. Meine Frage ist jetzt, wenn ich an dem Punkt wo dem Memo der Pointer zugewiesen wird, meiner Funktion den Pointer übergebe und dann weiter das "Global Memory" wieder freigebe könnte es doch theoretisch mit irgendwelchen Daten überschrieben werden und würde nicht mehr dem Inhalt entsprechen den ich in der Funktion bearbeiten möchte, oder?

mfg phluphu
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#2

Re: Pointer, ist er nun da oder nicht?!

  Alt 31. Mai 2004, 13:03
*push*
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:37 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