![]() |
Daten an Excel und Co. übertragen: Dezimaltrennzeichen
Hallo,
ich passe DecimalSeparator zur Laufzeit so an, daß ich keine Probleme mit einem Komma bekommen kann. Bei Beendigung setze ich das zurück. Nun hatte ich das Problem, daß ich Textdaten über in die Zwischenablage kopiert habe (auch Zahlen), Excel die aber die Zahlen nicht als solche akzeptierte (vermutlich weil es vor meinem Programm gestartet wurde und intern mit einem anderen Trennzeichen arbeitet). Ich möchte eigentlich die Zwischenablage auch anderen Programmen zugänglich halten und überlege, ob ich eine Extrafunktion für den Export nach Excel mache. Ich weiß aber nicht, ob sich das lohnt, weil ja ein eventuell vorher gestartetes Excel wieder den DecimalSeparator falsch interpretieren könnte. Kann man beim Excelexport den Separator mit übergeben, so daß ich unabhängig von den Windows-Einstellungen bin? Grüße, Messie |
Re: Daten an Excel und Co. übertragen: Dezimaltrennzeichen
Hallo Messie,
für die Programm-Zu-Programm Kommunikation - auch über die Zwischenablage - solltest du unbedingt die Windows-Einstellungen verwenden. So will es die Konvention. Probleme mit der Darstellung umgehst du am ehesten indem du die Daten über Automation weitergibst. Grüße vom marabu |
Re: Daten an Excel und Co. übertragen: Dezimaltrennzeichen
Zitat:
Ein Beispiel: ich öffne Excel und gebe ein paar Zahlen ein, mal mit Komma, mal mit Punkt. Die Eingaben mit dem gültigen Trennzeichen werden als Zahlen interpretiert. Wenn ich das Trennzeichen in der Systemsteuerung ändere, werden die Zahlen in Excel sofort mit geändert. Wenn ich das aus meinem Programm mache, passiert das nicht. Es muß also noch Routinen geben, die diese Änderung systemweit bekannt geben und die ich noch nicht kenne. Grüße, Messie |
Re: Daten an Excel und Co. übertragen: Dezimaltrennzeichen
Übrigens:
![]() funktioniert auch nur so, daß Excel nach dem Neustart das Trennzeichen akzeptiert. Die direkte Übernahme zur Excel-Laufzeit bleibt weiterhin unmöglich. Grüße, Messie |
Re: Daten an Excel und Co. übertragen: Dezimaltrennzeichen
Hallo Messie,
Zitat:
Grüße vom marabu |
Re: Daten an Excel und Co. übertragen: Dezimaltrennzeichen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Kann man solche Messages abhören oder anderweitig ermitteln? Grüße, Messie |
Re: Daten an Excel und Co. übertragen: Dezimaltrennzeichen
Entschuldige, aber ich brate gerade im eigenen Saft. UpdateFormatSettings steuert das Verhalten deiner eigenen Anwendung. Willst du andere Anwendungen informieren, so musst du die Nachricht WM_SETTINGCHANGE broadcasten.
marabu |
Dezimaltrennzeichen systemweit sofort ändern
Zitat:
Leider hatte ich verdrängt, daß ich die Funktion in einem Builder-Projekt einsetzen muß und es ist mir (natürlich) nicht gelungen, das umzusetzen :wall: :
Code:
Zur Laufzeit klappt SetLocaleInfo nicht, so daß ich meinen alten Separator immer behalte. Ich bin mir bezüglich des LCID-TypeCasts nicht sicher, jedenfalls kommt da eine recht große Zahl raus. Und ich habe das Gefühl, daß LOCALE_SDECIMAL in der Luft hängt, also undefiniert ist.
void SetDecimalSeparator(String Ch)
{ LCID DefLCID; LPSTR Buffer; Application->UpdateFormatSettings = true; StrPCopy(Buffer, Ch); DefLCID = (LCID)(GetThreadLocale); if (SetLocaleInfo(DefLCID, LOCALE_SDECIMAL, Buffer)) { DecimalSeparator = StrPas(Buffer)[1]; } Application->UpdateFormatSettings = false; SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 ); ShowMessage(DecimalSeparator); } Vielleicht schickt mir mal jemand eine Tüte Sternchen zum dazwischenstreuen, hat bisher immer wieder etwas gebracht. Danke, Messie /Edit: eine Tüte Klammern statt Sternchen hätte es hier besser getan - oder ein Orakel, das die BCB-Meldungen deuten kann. DefLCID = GetThreadLocale()!! Damit funzt alles! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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