Einzelnen Beitrag anzeigen

Delbor

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

Verständnisfrage Vorwärtsdeklaration

  Alt 6. Dez 2017, 12:33
Delphi-Version: XE8
Hi zusammen

Folgende Deklaration im PDFiumFrame:
Delphi-Quellcode:
  TPDFiumFrame = class(TFrame)
  private
// protected
    { Déclarations privées }
    type
      // One point is 1/72 inch (around 0.3528 mm).
      TPointsSize = record
        cx : Double;
        cy : Double;
      end;
 
      TRectD = record
        Left : Double;
        Top : Double;
        Right : Double;
        Bottom : Double;
      end;

      TPDFPage = class; // Sollte die Vorwärtsdeklaration sein
 
// TPDFPage = class
// Index : Integer;
// Handle : HPDFPage;
// Top : Double;
// Rect : TRect;
// Text : HPDFTextPage;
// NoText : Boolean;
// Visible : Integer;
// SelStart : Integer;
// SelStop : Integer;
// Selection: TArray<TRectD>;
// destructor Destroy; override;
// function HasText: Boolean;
// function CharIndex(x, y, distance: Integer): Integer;
// function CharCount: Integer;
// function Select(Start: Integer): Boolean;
// function SelectTo(Stop: Integer): Boolean;
// function ClearSelection: Boolean;
// procedure DrawSelection(DC, BMP: HDC; const Blend: TBlendFunction; const Client: TRect);
// end;

 private
// protected
    FDocument : HPDFDocument;
    FError : Integer;
    FPageCount: Integer;
    FPageSize : TArray<TPointsSize>;
...
Die Deklaration der Klasse TPDFPage habe ich in den public-Abschnitt verschoben, um von der Mainform aus darauf zugrreifen zu können. Da jedoch einige Felder des Frames vom Typ dieser Klasse sind, muss iich diese per Vorwärtsdeklaration bekannt machen, bevor die entsprechenden Felder eingeführt werden. Das Problem ist nur: Delphi meint:

Zitat:
[dcc32 Fehler] PDFium.Frame.pas(48): E2086 Typ 'TPDFiumFrame.TPDFPage' ist nicht vollständig definiert
Ich hab schonmal versucht, diese Deklaration in den public-Teil zu verschieben, wasaber zu sehr seltsamen Konstrukten führte - im Anhang zeigt ein Jpeg, wie das ausgesehen hat. Man beachte Zeile 5 und folgende unterhalb der blau markierten Zeile.
Das Embarcadero-Wiki hat mir dann verraten, das ich die Vorwärzsdeklaration mit einem Semikolon hätte abschliessen müssen.
Was nun diesmal der Grund für Delphis Meckerei ist, hab ich schlicht keine Ahnung.

Das Jpeg 'Vorwärtsdeklaration zeigt, wo ich diese anbringen wollte. Wenn ich ein end darunter schreibe, ist der Bezeichner TPDFPage unbekannt, ohne dieses end ist die Deklaration unvollständig...

Was, zum Kuckuck, mache ich falsch? Nach dieser Seite offenbar nichts. Und trotzdem meckert Delphi!

Gruss
Delbor
Miniaturansicht angehängter Grafiken
16_54_37-synpdf-master_pdfium.frame.pas.jpg   13_18_55-synpdf-master_pdfium.frame-vorwaertsdeklaration.jpg  
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat