Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ungültige Zeigeroperation (https://www.delphipraxis.net/167281-ungueltige-zeigeroperation.html)

Mazen 21. Mär 2012 09:29

Delphi-Version: 7

Ungültige Zeigeroperation
 
Hallo zusammen,

ich arbeite zur Zeit wieder an einem Projekt und der o.g. Fehler hält mich im Moment auf.
Der Codeabschnitt der diesen verursacht müsste folgender sein:

Code:
  temp := GetTempPDFFileName;

  LL.LlPrintSetOptionString(LL_PRNOPTSTR_EXPORT, 'PDF');
  LL.LlXSetParameter(LL_LLX_EXTENSIONTYPE_EXPORT, 'PDF', 'Export.Path', ExtractFilePath(temp));
  LL.LlXSetParameter(LL_LLX_EXTENSIONTYPE_EXPORT, 'PDF', 'Export.File', ExtractFileName(temp));
  LL.LlXSetParameter(LL_LLX_EXTENSIONTYPE_EXPORT, 'PDF', 'Export.Quiet', '1');
  LL.LlXSetParameter(LL_LLX_EXTENSIONTYPE_EXPORT, 'PDF', 'Export.ShowResult', '1');

  LL.AutoPrint(Application.Title, temp);
Setze ich einen Haltepunkt auf die letzte Zeile, so merke ich das bis dahin alles gut läuft, danach bekomm ich "Ungültige Zeigeroperation". Danach passiert im Quelltext aber gar nichts mehr, sondern dann ist die Funktion beendet für diesen Button.
Setze ich den Haltepunkt auf die erste Zeile des Codeabschnitts und kommentiere die letzte Zeile aus, so tritt der Fehler nach der vorletzten Zeile auf.

Kommentiere ich allerdings den gesamten Block aus, kommt kein Fehler.
In der variable "temp" steht ein richtiger Pfad, das habe ich geprüft.

Vielleicht habt ihr ja eine Idee.

MfG
Matze

DeddyH 21. Mär 2012 09:34

AW: Ungültige Zeigeroperation
 
Vielleicht nennst Du uns auch den Typ von LL?

Mazen 21. Mär 2012 09:37

AW: Ungültige Zeigeroperation
 
LL ist vom Typ TDBL13_ ...
Weiß nicht ob ihr damit was anfangen könnt. Ist ein Objekt von "List&Label" zum Erstellen von Reports und Listen der Firma combit.

mkinzler 21. Mär 2012 09:38

AW: Ungültige Zeigeroperation
 
Und wie ist der Typ deklariert?

Mazen 21. Mär 2012 09:53

AW: Ungültige Zeigeroperation
 
Bin mir nicht sicher ob du das jetzt meintest, aber TDBL13_ ist so deklariert:

TDBL13_ = class(TL13_)

Und wenn ich jetzt in TL13_ reinschaue sieht das so aus:

TL13_ = class(TComponent)

Und dann:

TComponent = class(TPersistent, IInterface, IInterfaceComponentReference)

War es das was du meinst?

jaenicke 21. Mär 2012 09:56

AW: Ungültige Zeigeroperation
 
Typischerweise ist bei der Fehlermeldung der Fehler, dass du auf ein schon freigegebenes Objekt zugreifst. Das solltest du mit FastMM4 leicht herausfinden können, da das das prüft und direkt als Meldung anzeigt.

DeddyH 21. Mär 2012 09:56

AW: Ungültige Zeigeroperation
 
Das ist aber eine Komponente auf Deinem Formular, nichts dynamisch erzeugtes, oder?

Mazen 21. Mär 2012 10:07

AW: Ungültige Zeigeroperation
 
Zitat:

Zitat von jaenicke (Beitrag 1157699)
Typischerweise ist bei der Fehlermeldung der Fehler, dass du auf ein schon freigegebenes Objekt zugreifst. Das solltest du mit FastMM4 leicht herausfinden können, da das das prüft und direkt als Meldung anzeigt.

FastMM4 sagt mir leider nichts, werd aber gleich mal schauen.

Zitat:

Zitat von DeddyH (Beitrag 1157700)
Das ist aber eine Komponente auf Deinem Formular, nichts dynamisch erzeugtes, oder?

Die Komponente ist auf meinem Formular, nicht dynamisch erzeugt ;)

DeddyH 21. Mär 2012 10:15

AW: Ungültige Zeigeroperation
 
Dann gehe ich mal nicht davon aus, dass Du diese händisch per Code irgendwo freigibst. Momentan gehen mir die Ideen aus.

Mazen 21. Mär 2012 10:16

AW: Ungültige Zeigeroperation
 
Zitat:

Zitat von DeddyH (Beitrag 1157706)
Dann gehe ich mal nicht davon aus, dass Du diese händisch per Code irgendwo freigibst. Momentan gehen mir die Ideen aus.

So siehts aus :/ Hab nichts von Hand freigegeben :/

Ich kanns jetzt nocht weiter eingränzen:
Wenn ich alles auskommentiere bis auf die erste zeile mit "temp :=" tritt der Fehler auch auf. Also muss es irgendwie damit zusammenhängen.
Problem ist das ich das nicht selbst geschrieben habe, sondern von einem kollegen so übernommen habe:

Code:
const PATH_LIBRARY = '\\server\programme\Library.dll';

function GetTempPDFFileName : String; external PATH_LIBRARY;
Und ich weiß auch nicht wie und womit ich die Library.dll öffnen könnte. Mit Delphi gehts schonmal nicht :/


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr.
Seite 1 von 2  1 2      

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