Thema: Delphi Deklaration oder nicht?

Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Deklaration oder nicht?

  Alt 6. Jan 2023, 23:17
Hi zusammen
Zitat:
Gehe ich recht in der Annahme, dass ihr alle trotzdem jede Prozedur auch im Interface deklariert, auch wenn sie nur in der Unit verwendet wird?
Zumindest ich gehöre zu dieser Fraktion. Inlinedeklarationen gewöhne ich mir nicht an, auch wenn dies eine ganz bestimmte Schreibweise im Code voraussetzt, die von diesem deutlich abweicht. Kurz zum Interfaceteil/Prozedurkopf wechseln und zurück ist auch dank Delphis IDE kein Problem.

Ich hab das erst so verstanden, dass ich dich gründlich missverstanden habe, bzw. dass ich mit meiner ungenügenden Beschreibung zu einem Missverständnis verleitet habe.

Missverständnis hin oder her ich zeig das mal am besten am konkreten Beispiel. Hier habe ich von einer Bitmap geschrieben, die ich mit einem Fremdprogramm einer PDF hinzugefügt habe (Bezahlt-Stempel). Dieser Stempel wird in meinem Programm nicht angezeigt, in einer Demo des Herstellers meiner PDF-Komponenten hingegen schon.
Da ich verständlicherweise wissen will, woran das liegt, habe ich damit begonnen, den Code zu klonen (damit ich nichts überlese).

Und in eben dieser Demo ist die gezeigte Prozedure ohne wirkliche Deklaration enthalten:
Delphi-Quellcode:
procedure PrintBitmap(Printer: TPrinter; Bitmap: TBitmap);
var
  InfoHeaderSize, ImageSize: DWORD;
  InfoHeader: PBitmapInfo;
  Image: Pointer;
begin
   xxx
end;
Die drei x stehen für einige Zeilen Code, die hier nicht interessieren. Diese Prozedur wird aus verschiedenen Routinen aufgerufen.
Eine Suche in der aktuellen Datei über den Suchen-Dialog erzeugt folgende Rückmeldung:

Zitat:
F:\Embarcadero Project Corner\Delphi Alexandria Corner\Delphi Alex Winsoft Demos 5-2\Viewer\Main.pas [2]
F:\Embarcadero Project Corner\Delphi Alexandria Corner\Delphi Alex Winsoft Demos 5-2\Viewer\Main.pas [2]
F:\Embarcadero Project Corner\Delphi Alexandria Corner\Delphi Alex Winsoft Demos 5-2\Viewer\Main.pas(518): procedure PrintBitmap(Printer: TPrinter; Bitmap: TBitmap);
F:\Embarcadero Project Corner\Delphi Alexandria Corner\Delphi Alex Winsoft Demos 5-2\Viewer\Main.pas(607): PrintBitmap(Printer, Bitmap);
Ein Code-Ausschnitt rund um die in der Meldung genannte Zeile 607:
Delphi-Quellcode:
            if Pdf.FormFill then
            begin
              Bitmap := Pdf.RenderPage(0, 0, Printer.PageWidth, Printer.PageHeight, ro0, [rePrinting]);
              try
                PrintBitmap(Printer, Bitmap); // <= Zeile 607:
              finally
                Bitmap.Free;
              end;
            end
Es gibt in dieser Unit auch keinen entsprechenden Prozedur-Typ.

Interessant ist, dass die CloneForm, mit deren Hilfe ich ermitteln will, wieso dieses Demoprogramm meine Pdfs mt dem Stempel anzeigt, mein eigenes Programm aber nicht, die Prozedur PrintBitmap und deren Aufruf(e) enthält, aber schon ohne Kompilierung als unbekannt kennzeichnet. Das bedeutet, dass eine Deklaration im Original vorhanden ist, aber weder von Delphi geschweige denn von mir gefunden wird...

Als Info vielleicht noch wichtig: Das Programm verwendet die DLL PDFium...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 6. Jan 2023 um 23:30 Uhr)
  Mit Zitat antworten Zitat