Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: EAccessViolation beim beenden

  Alt 7. Dez 2005, 17:55
wenn man ein neues DLL projekt anlegt steht da oben drin ein ganz wichtiger Text den du so wie es aussieht einfach entfernt hast ohne ihn zu lesen/verstehen. Du Darfst nicht einfach Objecte, Strings und andere Dinge die mit dynamischer Speicherverwaltung zu tun haben zwischen DLL hin und her reischen außer die bindest die ShareMem ein (wie es in dem besagten Text steht). Wenn du anstelle von TCanvas einfach Canvas.Handle an die funktion übergibst (der Typ ist HDC) dann kannst du innerhalb der DLL einem TCanvasObject dieses Handle zuweisen und genau so arbeiten wie bisher ohne das ein fehler auftaucht.

Ändere Sie einfach wie folgt ab:
Delphi-Quellcode:
procedure DrawColor(const CanvasHandle: HDC; Width: integer; Height: integer; ColorR, ColorG, ColorB: Byte);
var LCanvas: TCanvas;
begin
  LCanvas := TCanvas.Create;
  LCanvas.Handle := CanvasHandle;
  LCanvas.Brush.Color:=RGB(ColorR, ColorG, ColorB);// 1)
  LCanvas.Rectangle(-1, -1, Width + 1, Height + 1);
  LCanvas.Handle := 0;
  LCanvas.Free;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat