Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FloatToStr & Prozeduraufruf mit 2 Parametern (https://www.delphipraxis.net/194530-floattostr-prozeduraufruf-mit-2-parametern.html)

Delbor 3. Dez 2017 13:44

Delphi-Version: XE8

FloatToStr & Prozeduraufruf mit 2 Parametern
 
Hi zusammen

Ich habe folgendes Konstrukt:

Delphi-Quellcode:
    for i := 0 to FCtrl.Document.PageList.Count -1 do
    begin
      Memo1.Lines.Add('X-Offset / Y-Offset :=' + FloatToStr(FCtrl.Document.PageSizes[i].Offset(XOffset,)));
      ...
    end;
Und wie nicht anders zu erwarten, meint Delphi dazu:
Zitat:

[dcc32 Fehler] MainFrm.pas(114): E2250 Es gibt keine überladene Version von 'FloatToStr', die man mit diesen Argumenten aufrufen kann
Damit stehe ich aber vor einem Problem - ich kann die Prozedur nur mit beiden Parametern aufrufen, an FloattoStr aber nur einen übergeben.
Offset ist Teil des Records TPDFPoint:

Delphi-Quellcode:
  TPdfPoint = record
    X, Y: Double;
    procedure Offset(XOffset, YOffset: Double);
    class function Empty: TPdfPoint; static;
  end;
Gibst dafür eine Lösung?

Obiger Record ist Teil des Opensource-Projektes zu PDFium von Andreas Hausladen.

Gruss
Delbor

gammatester 3. Dez 2017 14:50

AW: FloatToStr & Prozeduraufruf mit 2 Parametern
 
Zitat:

Zitat von Delbor (Beitrag 1387813)
Ich habe folgendes Konstrukt:
Delphi-Quellcode:
  TPdfPoint = record
    X, Y: Double;
    procedure Offset(XOffset, YOffset: Double);
    class function Empty: TPdfPoint; static;
  end;
Gibst dafür eine Lösung?

Offset liefert als procedure ohne Var-Parameter noch nicht mal ein double! Meinst Du vieleicht
Delphi-Quellcode:
FCtrl.Document.PageSizes[i].X
und
Delphi-Quellcode:
FCtrl.Document.PageSizes[i].Y?

Delphi.Narium 3. Dez 2017 15:02

AW: FloatToStr & Prozeduraufruf mit 2 Parametern
 
Delphi-Quellcode:
 for i := 0 to FCtrl.Document.PageList.Count -1 do
    begin
      Memo1.Lines.Add(Format('X-Offset / Y-Offset := %n / %n',
      FCtrl.Document.PageSizes[i].X, FCtrl.Document.PageSizes[i].Y]));
    end;

Delbor 3. Dez 2017 18:22

AW: FloatToStr & Prozeduraufruf mit 2 Parametern
 
Hi zusamen

Zitat:

Zitat von gammatester (Beitrag 1387818)
Zitat:

Zitat von Delbor (Beitrag 1387813)
Ich habe folgendes Konstrukt:
Delphi-Quellcode:
  TPdfPoint = record
    X, Y: Double;
    procedure Offset(XOffset, YOffset: Double);
    class function Empty: TPdfPoint; static;
  end;
Gibst dafür eine Lösung?

Offset liefert als procedure ohne Var-Parameter noch nicht mal ein double! Meinst Du vieleicht
Delphi-Quellcode:
FCtrl.Document.PageSizes[i].X
und
Delphi-Quellcode:
FCtrl.Document.PageSizes[i].Y?

Natürlich hast du recht - das habe ich schlicht und einfach vergessen.

Zitat:

Zitat von Delphi.Narium (Beitrag 1387820)
Delphi-Quellcode:
 for i := 0 to FCtrl.Document.PageList.Count -1 do
    begin
      Memo1.Lines.Add(Format('X-Offset / Y-Offset := %n / %n',
      FCtrl.Document.PageSizes[i].X, FCtrl.Document.PageSizes[i].Y]));
    end;

Vielen Dank, Delphi.Narium, das beantwortet mir eigentlich die Kernfrage, wie ich zwei Fliegen mit einer Klappe schlage - ähhh zwei Werte gleichzeitig in eine Stringvariable kriege.

Um aber nochmal auf die Antwort von gammatester zurückzukommen:
Zitat:

Meinst Du vieleicht
Delphi-Quellcode:
FCtrl.Document.PageSizes[i].X
und [DELPHI]FCtrl.Document.PageSizes[i].Y?
Nein, eigentlich nicht, da ich das schon habe. Aber das ist das, was die procedure mit den Offsetwerten macht:
Delphi-Quellcode:
procedure TPdfPoint.Offset(XOffset, YOffset: Double);
begin
  X := X + XOffset;
  Y := Y + YOffset;
end;
Ich werde mir also einen andern Weg suchen müssen, um an die beiden Werte heranzukommen. Schliesslich kann (oder sollte) obige procedure nicht aufgerufen werden, bevor die beiden offsetwerte vernünftig initialisiert sind.
In der Beispielanwendung befindet sich der Aufruf des FileOpenDialogs im FormCreate, und meine hier geposteten Memo1-Anweisungen sind innerhalb des Fileopenblockes angeordnet. Und da sind die beiden Offset-Werte noch nicht initialisiert.

Hintergrund ist: Ich versuche zur Zeit, 2 PDF-Programme zu analysieren: Dieses (SynPdf.zip) und eben das von Andreas Hausladen.
Wobei ersteres schon fast genügen würde - es zeigt ein Dokumente in einem Frame an, wobei zwischen den einzelnen Seiten gescrollt werden kann. Einziges Manko: Ich verwende einen zweiten Frame, der das Dokument verkleinert darstellt, dafür aber mehrere Seiten gleichzeitig. Der sollte sozusagen als Sidebar/Navigationsbar für den grösseren Frame dienen.
Bis jetzt bin ich allerdings daran gescheitert, die beiden Frames, bzw ihre Inhalte, zu synchroniesieren

Gruss
Delbor


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 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