Hallo Uwe,
vielen Dank für deine Anregungen. Habe sie sogleich in mein Programm eingebaut. Die Ausgabe mit dem 1000er-Trennzeichen erfolgt immer in einer if ... else if Struktur, die insgesamt 6 Ebenen umfaßt. Und dort wird jeweils die erste der möglichen Outputs angekrittelt mit AFormatSettings als unbekannt. Aber das ganze kann nicht kompiliert werden.
Nun habe ich dein Konsolen-Beispiel in eine
VCL-Fassung gebracht und kann alles normal übersetzen, linken und exekutieren. Nun erscheint der Runtime-Error 217 (bei der Adresse 619834). alles komisch.
Code:
unit Test_1000_Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs;
type
TForm1 = class(TForm)
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
AFormatSettings: TFormatSettings;
const
Zahl: Extended = 1234567890;
begin
try
AFormatSettings := TFormatSettings.Create;
AFormatSettings.ThousandSeparator := #32; // Oder auch so ' '
Writeln(Format('%n', [Zahl], AFormatSettings));
Readln;
except
on E:
Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Vielleicht kommt der Fehler vom writeln-Befehl. Welchen Message-Dialog müßte da stehen?
Und noch eine andere Frage. In meinen Programm verwende ich einen Aufzählungstyp
Code:
type
TZ = (ab,bc,cd,de,ef,fg)
Nun wollte ich zu Testzwecken den aktuellen Wert von TZ ausgeben. Es scheint aber kein Format dafür zu geben. Oder ist so ein Konstrukt ein integer-Subtyp?
Einen fleißigen Osterhasen (für die Enkel).
Kurt