AGB  ·  Datenschutz  ·  Impressum  







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

Pointer auf TComponent versagt

Ein Thema von CalganX · begonnen am 27. Okt 2004 · letzter Beitrag vom 27. Okt 2004
 
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Pointer auf TComponent versagt

  Alt 27. Okt 2004, 13:02
Hi,
ich merke im Moment wie selten ich mich in den letzten Wochen mit Delphi beschäftigt habe.

Ich erhalte im Moment ständig eine Zugriffsverletzung und ich weiß nicht warum.
Der Fehler versteckt sich in folgender Methode:
Delphi-Quellcode:
function TIPlugin.Install(aApplication: IApplication): integer; stdcall;
var
  pComp: PComponent;
  cComp: TComponent;
  ehHandler: TEventHandler;
begin
  Result := NERROR_SUCCESS;
  ehHandler := TEventHandler.Create;
  try
    cComp := TComponent(aApplication.GetComponent('btnExport'));
    if ((cComp <> nil) and (cComp is TButton)) then begin
      (cComp as TButton).OnClick := ehHandler.OnBtnClick;
    end;

    gaApplication := aApplication;
  except
    Result := ERROR_UNKNOWN_ERROR;
  end;
end;
Entscheidende Rolle spielt dabei diese Methode, auf die zugegriffen wird:
Delphi-Quellcode:
function TIApplication.GetComponent(sComponentName: WideString): Pointer;
var
  pResult: PComponent;
  cComp: TComponent;
begin
  { Komponente des Forms finden und zurück an das Plugin geben }
  cComp := frmMain.FindComponent(sComponentName);
  pResult := @cComp;
  Result := pResult;
end;
Und zu guter Letzt sieht der Eventhandler so aus:
Delphi-Quellcode:
  TEventHandler = class
  public
    procedure OnBtnClick(Sender: TObject);
  end;

procedure TEventHandler.OnBtnClick(Sender: TObject);
var
  exExporter: TExportDataSet;
begin
  exExporter := TExportDataSet.Create;
  try
    exExporter.FileName := 'C:\Export.csv';
    exExporter.DataSet := TDataSet(gaApplication.GetDataSet);
    exExporter.Seperator := ';';
    exExporter.FixedLength := false;

    exExporter.ExportData;
  finally
    exExporter.Free;
  end;
end;
So... dise Zugriffsverletzung, die ich beim Aufrufen von TIPlugin.Install erhalte, kann ich nirgendwo aufspüren. Habe ich irgendwas übersehen?

Chris
  Mit Zitat antworten Zitat
 


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 08:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz