Zitat von
Raffigator:
Ich möchte über eine Delphi-Anwendung Fließkommazahlen in einer Oracle-Datenbank speichern. Oracle erwartet einen '.' als Trennzeichen, während Delphi das ',' benutzt.
Hi,
so ganz richtig ist das nicht. Eigentlich zeigt das aus schon, dass Du auf den National Language Support zurückgreifst. An sich benutzen sowohl Delphi als auch Oracle einfach lokalisierte Einstellungen. Delphi greift dabei immer auf die Einstellungen unter Windows zurück. I.d.R. wirst Du in Deutschland Rechner mit deutscher Lokalisierung finden und hier ist eben das Komma der Dezimalseperator. Wichtig ist, dass Du Dich eigentlich nie auf diesen verlassen solltest. Das man selbst einen solchen Rechner verwendet heißt natürlich nicht, dass alle Rechner auf denen das Programm einmal läuft ebenfalls diesen Dezimalseperator verwenden. So kann ein Kunde durchaus einen englisch lokalisierten haben, der erwartet dann den Dezimalpunkt (und natürlich kommen noch ganz andere Dinge in Frage).
Deshalb greift man häufig auf eine einheitliche Lokalisierung zurück, damit eine Datei auf einem dt. Rechner gespeichert und problemfrei auf einem eng. geladen werden kann und vice versa.
Dafür gibt es spezielle Strukturen, die Informationen über die bei einer Konvertierung zu verwendenden Einstellungen enthalten. Unter Delphi.Win32 währen das TFormatSettings, unter .net findest Du Implementierungen des IFormatProvider-Interface. In Deinem Fall die Klasse NumberFormatInfo und hier die Eigenschaft numberDecimalSeperator. Erzeuge hier eine neue Instanz, setz den Dezimalseperator und übergib diese Instanz dann an die toString Methode als zweites Argument (erstes ist weiterhin die zu konvertierende Zahl).
Gruß Der Unwissende