AGB  ·  Datenschutz  ·  Impressum  







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

BPL Zugriffsverletzung

Ein Thema von haentschman · begonnen am 20. Jul 2014 · letzter Beitrag vom 20. Jul 2014
 
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.306 Beiträge
 
Delphi 12 Athens
 
#1

BPL Zugriffsverletzung

  Alt 20. Jul 2014, 11:09
Hallo Alle...

Ich glaube das ich einen kleinen Fehler übersehen habe... Da hagelt es Zugriffsverletzungen incl. rtl150.bpl Instanziere ich die Klasse direkt läuft die Anwendung perfekt. Also mache ich beim Verwenden der BPL wahrscheinlich einen grundsätzlichen Fehler. Ich habe jetzt schon so viel Zeit investiert. Darum ist eure Hilfe nun notwendig.


Ziel:
Auslagerung einer Klasse und dynamische Verwendung. Rückgabe eines Interfaces. Verwendung des Interfaces in verschiedenen Threads unabhängig voneinander.

Klasse:
Delphi-Quellcode:
TXWebBaseParser = class(TInterfacedObject, IDVAParser)
.
TXWeb_500_V1_2Parser = class(TXWebBaseParser)

Funktionsbeispiel der Klasse (wahrscheinlich nicht relevant):

Delphi-Quellcode:
procedure TXWebBaseParser.ParseName(const aText: PChar; MasterDevice: TMasterDevice);
var
  sl: TStringList;
  I,J: Integer;
begin
  sl:= TStringList.Create;
  try
    sl.Text:= aText;
    for I:= 0 to sl.Count - 1 do
    begin
      if AnsiStartsText('var n_ins',sl[I]) then
      begin
        for J:= 14 to Length(sl[I]) do
        begin
          if sl[I][J] = '"then
          begin
            MasterDevice.Caption:= Copy(sl[I],14,J - 14);
            Break;
          end;
        end;
      end;
      if AnsiStartsText('var d_ins',sl[I]) then
      begin
        for J:= 14 to Length(sl[I]) do
        begin
          if sl[I][J] = '"then
          begin
            MasterDevice.Name:= Copy(sl[I],14,J - 14);
            Break;
          end;
        end;
      end;
    end;
  finally
    sl.Free;
  end;
end;
Direktverwendung funktioniert:
Delphi-Quellcode:
FParser: IDVAParser;
.
.
procedure TDVAParser.LoadBpl;
begin
  FParser:= TXWeb_500_V1_2Parser.Create;
// FBpl:= 'D:\tmp_1\Debug\Win32\XWEB_500_V1_2_1.bpl';
// FMasterDeviceBplHandle:= LoadPackage(PChar(FBpl));
// if FMasterDeviceBplHandle <> 0 then begin
// FCreateParser:= GetProcAddress(FMasterDeviceBplHandle, 'CreateParser');
// FParser:= FCreateParser;
// end
// else
// begin
// raise Exception.Create('BPL ' + QuotedStr(FBpl) + ' konnte nicht geladen werden.');
// end;
end;
Function für Interface in der BPL:
Delphi-Quellcode:
function CreateParser: IDVAParser;
begin
  Result:= TXWeb_500_V1_2Parser.Create;
end;

exports
  CreateParser;
Beispiel BPL:
Delphi-Quellcode:
FParser: IDVAParser;
.
.
procedure TDVAParser.LoadBPL;
begin
// FParser:= TXWeb_500_V1_2Parser.Create;
  FBpl:= 'D:\tmp_1\Debug\Win32\XWEB_500_V1_2_1.bpl';
  FMasterDeviceBplHandle:= LoadPackage(PChar(FBpl));
  if FMasterDeviceBplHandle <> 0 then begin
    FCreateParser:= GetProcAddress(FMasterDeviceBplHandle, 'CreateParser');
    FParser:= FCreateParser; // Interface wird zurückgegeben
  end
  else
  begin
    raise Exception.Create('BPL ' + QuotedStr(FBpl) + ' konnte nicht geladen werden.');
  end;
end;
Problem:
Bei Verwendung der BPL bekomme ich Zugriffsverletzungen aus den verschiedensten Bereichen. Angeblich sind Listen nil usw. Da die Listen außerhalb der BPL erzeugt werden und nur der Klasse zum Füllen übergeben werden kann ich manches nur als Nebeneffekt bezeichnen. Bei BPL sollte das eigentlich uneingeschränkt funktionieren.

Danke für Info´s. Bitte beschränkt euch bei der Diskussion auf die Zielaufgabe. Das Projekt ist schon komplex genug und fortgeschritten

Geändert von haentschman (20. Jul 2014 um 21:01 Uhr)
  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 07:32 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