![]() |
Probleme mit Format und Widestring
Hallo zusammen,
ich arbeite mich gerade im VirtualTreeview ein und stoße dabei auf ein Formatierungsproblem meiner Ausgabe. Kurz zum Hintergrund des VT: Inhalte des Treeviews werden in einem Record gespeichert, in diesem Record ist eine Integer, die ich im Rahmen der Ausgabe als formatierten String darstellen möchte. In dem Ereignis des VT, welches die Darstellung der Record-Inhalte übernimmt, ist der String(CellText) als Widestring definiert:
Delphi-Quellcode:
Wenn ich jetzt schreibe:
procedure TfrmMain.MyTreeGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
Delphi-Quellcode:
Bekomme ich eine "Format invalid"-Meldung
CellText:=Format('%8.2n', [inttostr(myData.IntWert)]);
Formatieren möchte ich, dass die Zahl mit Tausender-Punkten ausgegeben wird. Gruß Igotcha |
Re: Probleme mit Format und Widestring
Das hat nichts mit dem WideString zu tun ;)
Delphi-Quellcode:
...:cat:...
CellText:=Format('%d', [myData.IntWert]);
|
Re: Probleme mit Format und Widestring
Nee ;-)
Ich möchte z.B. den Int-Wert 10000000 als String in der Form "10.000.000" anzeigen lassen. Der VirtualTV lässt ja nur Strings als Anzeige zu - also muß ich den Int-Wert vorher formatieren. Das, was Du schreibst, könnte man ja gleich als:
Delphi-Quellcode:
schreiben, das nimmt er auch - aber da ist eben keine Formatierung dabei.
CellText:=IntToStr(myData.IntWert)
Ich denke schon, dass das am WideString liegt, denn wenn ich den Wert in eine Stringvariable formatiere geht es nämlich.
Delphi-Quellcode:
Hat als Rückgabewert eben nur "String" und nicht "WideString".
function Format(const Format: string; const Args: array of const): string; overload;
Oder stehe ich gerade völlig auf dem Schlauch :gruebel: |
Re: Probleme mit Format und Widestring
Zitat:
Delphi-Quellcode:
Da %n einen Integer erwartet
CellText:=Format('%8.2n', [myData.IntWert]);
Gruss Hans |
Re: Probleme mit Format und Widestring
Zitat:
"n" besag nur die Formatierung mit Tausender-Punkt und der o.g. Code geht nicht, da Format einen String als Argument erwartet. |
Re: Probleme mit Format und Widestring
Zitat:
Delphi-Quellcode:
Ist zwar nicht schön, sollte aber funktionieren
function ....
var temp : double; begin temp := myData.IntWert; CellText:=Format('%8.2n', [temp]); end; Gruss Hans |
Re: Probleme mit Format und Widestring
Wie wär's mit:
Delphi-Quellcode:
???
Format('%8.2n', [StrToFloat(IntToStr(i))]);
|
Re: Probleme mit Format und Widestring
Zitat:
... genau so wenig wie :
Delphi-Quellcode:
Format('%8.2n', [i*1.0])
|
Re: Probleme mit Format und Widestring
Ja super, so funktioniert es zumindest, obwohl das nicht so ganz schön ist, da ich pro Ansicht so > 16.000 Daten "manipulieren" muss.
Ich habe jetzt statt "Integer" einfach "Double" verwendet. Muss nur mal schauen, ob sich das anderweitig negativ bemerkbar macht. Danke und Gruß Igotcha |
Re: Probleme mit Format und Widestring
Ok, dürfte ein paar Ticks mehr brauchen, aber benutze doch einfach folgende Funktion: :mrgreen:
Delphi-Quellcode:
function IntToFloat(Value: Integer): Double;
begin Result := Value; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz