![]() |
FormatDateTime liefert englische Wochentage
Moin Moin,
auf einigen (wenigen) Kundenrechnern liefert FormatDateTime englische Werte. FormatDateTime('ddd, dd.mm.yy', MeinDatum) ergibt dann Thu, 11.02.10 statt Die, 11.02.10 Die Kunden versichern, ein deutsches Windows zu nutzen. Soweit ich Screenshots von den Kundenrechnern geprüft habe, ist unter "Region & Sprache" auf der Registerkarte "Formate" auch tatsächlich Deutsch eingestellt. Hat jemand eine Idee, woher die englischen Wochentagsnamen kommen könnten? Gruß Hepdepaddel |
Re: FormatDateTime liefert englische Wochentage
Und was ist beim langen Datumsformat eingetragen?
|
Re: FormatDateTime liefert englische Wochentage
Wenn ich mich nicht ganz irre sind die ResourceStrings dafür in SysConst.pas eingetragen.
Diese werden von dort in einen festen Array geschrieben und dann im Programmablauf genutzt. Dies soll bedeuten, hast du keine Lokalisierung deines Programms mit dementsprechenden Tools vorgenommen, werden diese Strings genau in der Sprache beim Kunden auftauchen, in der Sie von deinem Delphi kompiliert worden sind. Dies gilt auch für alle Delphi-Fehlermeldungen. |
Re: FormatDateTime liefert englische Wochentage
![]() Zitat:
|
Re: FormatDateTime liefert englische Wochentage
Oder kurz: In welcher Sprache ist dein Delphi mit dem das Programm erstellt wurde. Allerdings glaube ich nicht, dass es daran liegt, denn genau das sollen ja die Format-Funktionen vermeiden und Datum/Zeit gemäß der Systemeinstellungen formatieren.
|
Re: FormatDateTime liefert englische Wochentage
Doch liegt es, dann Delphi bringt seine eigenen Wochentagstrings mit ... schau mal in die SysConst.pas
Willst du die sprachabhängigen Strings von Windows, so wirst du diese selber auslesen müssen. Wenn du diese dann in SysUtils.DefLongDayNames einträgst, dann kannst du weiterhin die Delphi-Funktionen, wie FormatDateTime, nutzen. [edit] oder man hört mal auf DeddyH :angel2: |
Re: FormatDateTime liefert englische Wochentage
Zitat:
|
Re: FormatDateTime liefert englische Wochentage
Schnellster und einfachster Weg zur Lösung deines Problems - mach was DeddyH sagt ;)
(Deine Delphi-Fehlermeldungen werden in deinem Fall trotzdem auf englisch erscheinen, deshalb ist eine Lokalisierung über kurz oder lang zu überdenken.) |
Re: FormatDateTime liefert englische Wochentage
Nicht seine, sondern die von Delphi und da auch nur die, die er nicht behandelt und bis ganz oben durchschlagen.
|
Re: FormatDateTime liefert englische Wochentage
Zitat:
Delphi-Quellcode:
var Settings: TFormatSettings;
begin GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, Settings); ShowMessage(FormatDateTime('ddd, dd.mm.yy', now, Settings)); end; |
Re: FormatDateTime liefert englische Wochentage
Zitat:
Ok mal ganz genau meinen Satz ausgeschrieben. "Die Fehlermeldungen in deinem Programm, die nicht von Windows oder dir selber stammen, sondern von Delphi selbst mitgeliefert werden, werden in deinem fall immer noch auf englisch erscheinen...." Besser? :mrgreen: |
Re: FormatDateTime liefert englische Wochentage
Besser.
|
Re: FormatDateTime liefert englische Wochentage
Erst einmal besten Dank für die vielen Antworten, aufgrund der Mittagspause konnte ich die Diskussion nicht früher einfangen. Ich versuche mal, alle genannten Aspekte aufzugreifen :)
Es sind wie gesagt ja nur wenige Rechner - weniger als 0.1% der Kunden melden das Problem. Selbst mit Dunkelziffer dürfte der Anteil verschwindend gering sein. Von daher kann ich mir nicht vorstellen, dass es an der Delphiversion liegt. Die ist zudem deutsch. Das scheint mir eher an einer exotischen Einstellung auf den betroffenen Rechnern zu liegen. Auf den Testrechnern funktioniert alles rund, genau wie auf dem Entwicklungsrechner - wechsle ich dort die Einstellung von Deutsch auf Englisch, zeigt das Programm erwartungsgemäß andere Wochentagsbezeichnungen. Threads nutze ich nicht, da wird die ganz normale FormatDateTime aufgerufen. Ach ja: Das lange Datumsformat ist beispielsweise in einem Fall "TTTT, T.MMMM JJJJ" das ist auch auf meinem Win7-System die normale Einstellung. Hier klappt es. Gruß Hepdepaddel |
Re: FormatDateTime liefert englische Wochentage
Ich habe mir die Mühe gemacht und eben mal in den Delphi SourceCode geschaut, was Delphi macht.
Wie von mir vermutet nimmt Delphi die ResourcenStrings aus SysConst.pas und schreibt diese in einen festen globalen Array. Dieser Array wird in FormateDateTime benutzt. Das heißt, genau die Sprache muss erscheinen, die im SysConst.pas des Rechners steht mit dem das Programm kompiliert wird, ausser es findet doch eine Lokalisierung statt. Ausser du nutzt doch den Weg den DeddyH beschrieben hat, ohne daß es dir bewusst ist, da du es woanders im Source setzt, dann werden die lokalen Betriebssystem-Einstellungen verwendet. Ein dazwischen bzw. wie du sagst "exotische Einstellungen" kann es nach meiner Meinung nicht geben. |
Re: FormatDateTime liefert englische Wochentage
Vielen Dank für Deine Mühe und den Blick in den Quelltext! Ehrlich gesagt kann ich mit dem Weg, den DeddyH "beschrieben" hat, nicht viel anfangen, weil ich den nicht verstehe. Das ist ein Zitat aus der Online-Hilfe. Threads nutze ich da nicht und GetLocaleFormatSettings rufe ich in der ganzen Applikation nicht einmal auf.
Zitat:
FormatDateTime wird nur mit zwei Parametern aufgerufen - nie mit dreien, die dann die FormatSettings beinhalten würden. Laut der Hilfe werden dann globale Lokalisierungsinformationen genutzt. Also wird in meinem Fall ja völlig zu Recht lokalisiert. Das widerspricht Deiner Quelltextanalyse, wonach nicht lokalisiert wird. Zusammenfassend: Wenn keine Lokalisierung statt fände, müsste es Deutsch sein, dann wäre das ein seltsamer Fehler. Wenn eine Lokalisierung statt fände, müsste das auf einem deutschen Win7 mit den Einstellungen Deutsch sein, dann wäre das ein seltsamer Fehler. Bleibt in beiden Fällen leider kein Ergebnis. :wall: Gruß Hepdepaddel |
Re: FormatDateTime liefert englische Wochentage
Hallo Hepdepaddel,
leider kann ich dir auch keine Lösung für dein Problem nennen, ich kann nur bestätigen daß es disen Fehler gibt. Auch bei uns tritt bei eingien wenigen Kunden der beschriebene Effekt auf. Es werden englische Tagesbezeichnungen ausgegeben obwohl das Entwicklungssystem und der Zielrechner deutsche Versionen nutzen und auch alle Einstellungen auf deutsch stehen. Das ist schon etwas "strange", und vor allem so gut nachzuvollziehen. :wall: Interessant ist, daß der Fehler bisher nur unter Windows 7 Systemen auftritt. mfg CG |
Re: FormatDateTime liefert englische Wochentage
Herzlichen Dank für die Rückmeldung. Es tut schon einmal gut, zu wissen, dass ich nicht bekloppt bin :)
Win7 trifft auch bei mir zu. D2007, auch auf Win7 entwickelt. Was setzt Ihr ein? Gruß Hepdepaddel |
Re: FormatDateTime liefert englische Wochentage
@Hepdepaddel
wir entwickeln auf XP Prof und D2006. Sind aber schon beim portieren auf D2010/Win7. Fehler tritt scheinbar nur auf Windows 7 auf. Gruß CG |
Re: FormatDateTime liefert englische Wochentage
Bei einem vergleichbaren Problem hat es geholfen Windows komplett auf US-Englisch umzustellen und anschließend wieder auf Deutsch.
Zur Sicherheit dazwischen neu starten. Vermutung: Der PC wurde vom Hersteller orginal mit Windows7 US-Englisch installiert. Die Lokalisierung erfolgte erst vor der Auslieferung über ein (nicht ganz perfektes) Script. |
Re: FormatDateTime liefert englische Wochentage
@Blup
danke für den Tip werde ich meinen 2 Kunden mal versuchen nahezubringen. Ist aber trotzdem etwas verwunderlich, da Delphi die Arraywerte ja angeblich mit einkompiliert. Ich melde mich wenn es was bringt. Danke schonmal für den Hinweis. |
Re: FormatDateTime liefert englische Wochentage
Hallo,
Zitat:
Wie haben Kunden in Österreich mit XP-Proff in Österreicht-Deutsch ... da steht dann Janner, oder wie der Januar bei denen heisst ;) Heiko |
Re: FormatDateTime liefert englische Wochentage
@Hoika,
das ist klar. Es ist nur verwunderlich wenn alle Ländereinstellungen auf deutsch (Deutschland) stehen aber englische Tagesnamen ausgegeben werden. Wenn die Tagesnamen aus den Windowseinstellungen kommen (was ich erwartet hatte beim LongDayNames-Array) kann da was nicht passen. |
Re: FormatDateTime liefert englische Wochentage
Hallo allerseits,
nachdem ich mir nun schon nen' Wolf zu dem Theam gesucht habe, habe ich zumindestens einen kleinen Beitrag: Der Fehler tritt auf, wenn es WIN 7 Enterprise/Ultim. englisch + MUI Languagepack z.B. deutsch ist. In WIN 7 Regio sieht alles ok aus, aber die VCL Programme liefern weiterhin die englischen locals. Und das ist nicht schö, warum weiß ich noch nicht. Gruß Schiffi :gruebel: |
Re: FormatDateTime liefert englische Wochentage
@schiffi,
willkommen im Sachsen-Anhalt-Thread :cyclops: Das ist ja schonmal gut zu wissen, leider habe ich von meinen 2 "Problemkunden" noch keine Rückmeldung bezüglich Version Ihrer Win7 Installation. Und ob die Kunden rauskriegen ob Sie ne englische Version mit deutschem Sprachpaket haben bezweifle ich. Wenn ich mehr erfahre melde ich mich hier wieder. cg |
Re: FormatDateTime liefert englische Wochentage
Ja, es ist zumindestens so bei meinen C++B.6 Programmen (Entspricht VCL Stand Delphi 7), die ich als Altlasten noch mitschleppe.
Alle Programme, die nur die reinen VCl Routinen benutzen, laufen auf meinem 'normalen' WIN 7 Pro Entwicklungsrechner einwandfrei. Auf Clients, die gerade für ne größere Kundengruppe mit win7 enterprise + dtsch. MUI Paket konfiguriert und getestet werden, bringen dieselben Programme die engl. Zahlendarst., Datümer und andere lustige Sachen :bouncing4:. Nur die Apps, die ich mit Hilfe des guten alten Multilizers selber lokalisiert habe, scheren sich nicht drum und funzen.... Wie ich so sehe, scheint das aber auch bei neueren IDE / VCL so zu sein? |
Re: FormatDateTime liefert englische Wochentage
Hallo Schiffi,
auf ![]() ps. Ich habe das entsprechende Projekt noch unter D2006 kompiliert. Die portierte Version unter D2010 ist noch nicht in freier Wildbahn. Deshalb weiß ich nicht ob der Fehler unter neuen IDE/VCLs weiterhin besteht. cg |
Re: FormatDateTime liefert englische Wochentage
Soooo... einem Kunden sei Dank haben wir nun eine Lösung:
Unter Windows 7 auf "Start (oder wie immer der runde Button unten links jetzt heißt)" > Systemsteuerung > Region und Sprache > Reiter: Format. Klick auf den Button "Weitere Einstellungen". Klick auf "Zurücksetzen" - auch falls die Einstellungen in Ordnung aussehen. :roll: Schließen aller Fenster mit "OK". Nach einem Neustart war das Problem auf bisher allen Problemrechnern gelöst. Da das Thema ja nicht bei mir alleine auftrat, mag das für manchen Suchenden im Forum interessant sein. Gruß Hepdepaddel |
AW: FormatDateTime liefert englische Wochentage
Hey Hepdepaddel,
dieser Tipp war ultimativ gut. Habe mich schon ewig mit diesen englischen Systemeinstellungen in deutschen Umgebungen herumgeärgert und jeweils Einstellungen wie ThousandSeparator, DateSeparator, ShortDateFormat etc. im OnCreate des Hauptformulars (unschön aber wirkungsvoll) gesetzt. Nun brauche ich diese Hacks nicht mehr, judihui! Oakins |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 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