Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Format - Fehler die die Welt nicht braucht (https://www.delphipraxis.net/181352-format-fehler-die-die-welt-nicht-braucht.html)

p80286 8. Aug 2014 10:27

Delphi-Version: 2006

Format - Fehler die die Welt nicht braucht
 
Hallo zusammen,
diese Zeile produziert einen RTE ".. %d ungültiger Formatbezeichner.." (oder s.ä.)
Delphi-Quellcode:
Memo1.Lines.Add(format(' FrameNo.: %d of %d',[frx,WB.OleObject.document.FRAMES.length-1]));
nach etwas verständnislosem herumprobieren, ist das jetzt mein Workaround.
Delphi-Quellcode:
Memo1.Lines.Add(format(' FrameNo.: %d of %s',[frx,inttostr(WB.OleObject.document.FRAMES.length-1)]));
Da fühl ich mich doch etwas auf den Arm genommen.
Warum zickt hier Format so herum, denn in der OH steht nichts von einer Beschränkung.

Gruß
K-H

Der schöne Günther 8. Aug 2014 10:39

AW: Format - Fehler die die Welt nicht braucht
 
Ich habe diese OLE-Geschichte nie verstanden, aber Format nimmt als Parameter ein "Array of const", also ein "Array of TVarRec". Was ist den wenn du es (inkl. "-1") n eine TVarRec-Variable steckst? Ich könnte mir vorstellen dass er es auf eine Gleitkommazahl castet.

Bernhard Geyer 8. Aug 2014 11:19

AW: Format - Fehler die die Welt nicht braucht
 
Zitat:

Zitat von p80286 (Beitrag 1267971)
Hallo zusammen,
diese Zeile produziert einen RTE ".. %d ungültiger Formatbezeichner.." (oder s.ä.)
Delphi-Quellcode:
Memo1.Lines.Add(format(' FrameNo.: %d of %d',[frx,WB.OleObject.document.FRAMES.length-1]));
nach etwas verständnislosem herumprobieren, ist das jetzt mein Workaround.
Delphi-Quellcode:
Memo1.Lines.Add(format(' FrameNo.: %d of %s',[frx,inttostr(WB.OleObject.document.FRAMES.length-1)]));
Da fühl ich mich doch etwas auf den Arm genommen.
Warum zickt hier Format so herum, denn in der OH steht nichts von einer Beschränkung.

Steht doch drin. %d ist für Integerwerte.
Dein Olevariant (.document.Frames.length) liefert ein OleVariant.
Und mit OleVariant kann der %d-Parameter nix anfangen.

Uwe Raabe 8. Aug 2014 11:20

AW: Format - Fehler die die Welt nicht braucht
 
In dem Fall wäre ein Round oder ein Cast auf Integer eventuell auch zielführend.

p80286 8. Aug 2014 12:30

AW: Format - Fehler die die Welt nicht braucht
 
:oops:
Oh Mann, ganz schön blind (OLEVariant). Da das
Delphi-Quellcode:
inttostr
nicht gemeckert hat, hab ich an soetwas natürlich garnicht gedacht.

Danke!

K-H

Dejan Vu 8. Aug 2014 14:19

AW: Format - Fehler die die Welt nicht braucht
 
Ich hatte auch an sowas gedacht, nahm aber an, dass
Delphi-Quellcode:
WB.OleObject.document.FRAMES.length-1
(man beachte die '-1') einen Integer liefert. Wäre ja naheliegend.

mkinzler 8. Aug 2014 14:32

AW: Format - Fehler die die Welt nicht braucht
 
Da es sich um eine ActiveX-Objekt handelt, wird ein OLEVariant zurückgeliefert.

himitsu 8. Aug 2014 14:49

AW: Format - Fehler die die Welt nicht braucht
 
Zitat:

Zitat von Dejan Vu (Beitrag 1268027)
Ich hatte auch an sowas gedacht, nahm aber an, dass
Delphi-Quellcode:
WB.OleObject.document.FRAMES.length-1
(man beachte die '-1') einen Integer liefert. Wäre ja naheliegend.

Oder einen Float, was hier wohl passiert ist.

Dejan Vu 8. Aug 2014 15:15

AW: Format - Fehler die die Welt nicht braucht
 
Achso. Blödes Ding.


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