Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FormatDateTime liefert englische Wochentage (https://www.delphipraxis.net/147561-formatdatetime-liefert-englische-wochentage.html)

Tyrael Y. 11. Feb 2010 13:14

Re: FormatDateTime liefert englische Wochentage
 
Zitat:

Zitat von Luckie
Nicht seine, sondern die von Delphi und da auch nur die, die er nicht behandelt und bis ganz oben durchschlagen.

Das sag ich doch. :D
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:

Luckie 11. Feb 2010 13:17

Re: FormatDateTime liefert englische Wochentage
 
Besser.

Hepdepaddel 11. Feb 2010 13:33

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

Tyrael Y. 11. Feb 2010 13:49

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.

Hepdepaddel 11. Feb 2010 16:12

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:

Die erste Form von FormatDateTime ist nicht Thread-sicher, da die landesspezifischen Informationen der globalen Variablen verwendet werden. Der Thread-sicheren zweiten Form werden die landesspezifischen Informationen im Parameter FormatSettings übergeben. Bevor Sie diese Form von FormatDateTime aufrufen, müssen Sie die Informationen in den Parameter FormatSettings schreiben. Die landesspezifischen Standardinformationen können FormatSettings mit GetLocaleFormatSettings zugewiesen werden.

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

ConstantGardener 11. Feb 2010 19:16

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

Hepdepaddel 11. Feb 2010 20:16

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

ConstantGardener 11. Feb 2010 23:45

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

Blup 12. Feb 2010 07:23

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.

ConstantGardener 12. Feb 2010 10:51

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.
Seite 2 von 3     12 3      

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