CDoW()
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
CDoW()
hi,
CDoW() scheint auf die SET DATE Typen "beschränkt" zu sein.
obwohl es ja nun kein Problem ist eine eigene Function MyCDoW() zu schreiben,
wüsste ich gerne ob man das per Win API machen könnte ?
CDoW() scheint auf die SET DATE Typen "beschränkt" zu sein.
obwohl es ja nun kein Problem ist eine eigene Function MyCDoW() zu schreiben,
wüsste ich gerne ob man das per Win API machen könnte ?
gruss by OHR
Jimmy
Jimmy
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: CDoW()
Hi Jimmy,
irgendwie weiß ich nicht worauf du hinauswillst. Wenn man mit Datumswerten arbeitet muß man doch einen Set Data - Angeben.
Steht in der Hilfe auch beschrieben das dies für CDow() notwendig ist.
Wolltest du das haben ohne Set Data ??? Wie soll denn dann ein vernünftiger Wert rauskommen ?
irgendwie weiß ich nicht worauf du hinauswillst. Wenn man mit Datumswerten arbeitet muß man doch einen Set Data - Angeben.
Steht in der Hilfe auch beschrieben das dies für CDow() notwendig ist.
Wolltest du das haben ohne Set Data ??? Wie soll denn dann ein vernünftiger Wert rauskommen ?
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: CDoW()
Ich nehme an, dass Jimmy die Funktion für Datumsangaben im julianischen oder anderen nichtkonformen Formaten benötigt. Dafür wäre aber eine Umrechnungsfunktion (derlei gibt es) sinnvoller, auf die dann CDoW() aufsetzen kann.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: CDoW()
Tom,
mit dem julianischen Kalender wäre das ja noch einfach. Da muß man halt einfach um 8 Tage verschieben (ich mache das in meinem Genealogieprogramm so). Aber wenn ich mir das Posting von Jimmy in der NG ansehe, dann scheint mir das Problem woanders zu liegen. Wobei ich nicht wirklich verstanden habe, was er da meint. Denn der chinesische westliche Kalender ist der gregorianische Kalender, also wäre da keine Umrechnung notwendig. Man muß "nur" den gregorianischen nach chinesisch umrechnen. Ich habe zwar einige Umrechnungsformeln, aber den nun wirklich nicht.
Jan
mit dem julianischen Kalender wäre das ja noch einfach. Da muß man halt einfach um 8 Tage verschieben (ich mache das in meinem Genealogieprogramm so). Aber wenn ich mir das Posting von Jimmy in der NG ansehe, dann scheint mir das Problem woanders zu liegen. Wobei ich nicht wirklich verstanden habe, was er da meint. Denn der chinesische westliche Kalender ist der gregorianische Kalender, also wäre da keine Umrechnung notwendig. Man muß "nur" den gregorianischen nach chinesisch umrechnen. Ich habe zwar einige Umrechnungsformeln, aber den nun wirklich nicht.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: CDoW()
Hi Jimmy,
willst du darauf hinaus, die Wochentagsnamen in einer anderen Sprache als der in Windows
eingestellten zu bekommen? Das wäre per Win API machbar.
Lass hören...
Gruss
Günter
willst du darauf hinaus, die Wochentagsnamen in einer anderen Sprache als der in Windows
eingestellten zu bekommen? Das wäre per Win API machbar.
Lass hören...
Gruss
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CDoW()
JA genau das ist meine Frage.Günter Beyes hat geschrieben:willst du darauf hinaus, die Wochentagsnamen in einer anderen Sprache als der in Windows
eingestellten zu bekommen? Das wäre per Win API machbar.
Sorry das ich bei der Fragestellung so ungenau war den es ging um das hier die WochenTagNamen kommen falsch raus wenn ich chinesisch verwende, deshalb suche ich eine API
die mir das vom System wiedergeben kann den das ist wohl in der XppNAT.DLL verankert.
What would you like to achieve by having CDow() in xppsys? If you need to
change the character-strings or want to create a different culture/locale
you can create a copy of the xppnat.dll and use a resource-editor such as resource
hack. Edit the resource-ids 10050 - 10056 and you are all set.
In general xppnat is per definition the only part of the Xbase++ runtime
which is allowed to hold constants which are culture/locale specific.
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: CDoW()
Hallo Jimmy,
das Bild kennen wir ja aus der NG schon. Aber mangels umfassender Chinesischkenntnisse konnte ich da keinen Fehler dan erkennen.
Jan
das Bild kennen wir ja aus der NG schon. Aber mangels umfassender Chinesischkenntnisse konnte ich da keinen Fehler dan erkennen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CDoW()
hm ... ja ... "Chinesisch kenntnisse" ...Jan hat geschrieben:das Bild kennen wir ja aus der NG schon. Aber mangels umfassender Chinesisch kenntnisse konnte ich da keinen Fehler da erkennen.
Code: Alles auswählen
SET EPOCH TO YEAR( DATE() ) - 50
SET CENTURY ON
IF ID_CHINA
SET DATE SYSTEM
SET DATE FORMAT TO "mm-dd-yyyy"
ELSE
SET DATE GERMAN
SET DATE FORMAT TO "dd.mm.yyyy"
ENDIF
CDOW((::FAHRBUCH)->DATUM)+" "+DtoC( (::FAHRBUCH)->DATUM )}
beim Calender stehen die Tage doch in der oberen Reihe und die stimmen unter chinesichem OS() dann nicht
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: CDoW()
Jimmy,
klar, die Wochentage stehen oben. Aber mit welchem Tag fängt die chinesische Woche an? Montag wie bei uns? Oder Sonntag wie bei den Amis? Oder noch was anderes? und da ich die chinesischen Schriftzeichen wie gesagt nicht wirklich entziffern kann hat das Bild mir eigentlich nix gesagt in Bezug auf Dein Problem.
Jan
klar, die Wochentage stehen oben. Aber mit welchem Tag fängt die chinesische Woche an? Montag wie bei uns? Oder Sonntag wie bei den Amis? Oder noch was anderes? und da ich die chinesischen Schriftzeichen wie gesagt nicht wirklich entziffern kann hat das Bild mir eigentlich nix gesagt in Bezug auf Dein Problem.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: CDoW()
Und was spricht dagegen, das hardcodiert zu machen? Immerhin liefert DoW() ja immer die selbe Nummer, und anhand dieser könnte man (ID_CHINA) die entsprechenden Texte in einer überlagerten Funktion CDoW() retournieren.
Herzlich,
Tom
Tom
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: CDoW()
Hi Jimmy,
das müsste ganz ohne Resource Hacker ( ) mit GetLocaleInfoA aus kernel32.dll gehen, siehe auch
http://msdn.microsoft.com/en-us/library ... nd%29.aspx
also in etwa
mit
Parameter nLanguage gibt die Sprache und Sprachvariante (genauer gesagt Kombination aus Sprache und Region) an.
Welche Sprachen (zumindest für die Anzeige von Tages- und Monatsnamen und ähnliche Zwecke) auf einem System verfügbar sind, zeigt z.B. das Tool LocaleExplorer von http://www.flounder.com in den Tab-Panels "EnumSystemLocales" und "CalendarInfo". Auch zeigt das Tab-Panel "EnumLanguageGroupLocales" die unterschiedlichen Kennungen nach Sprachfamilien untergliedert und nach Sprachen sortiert. Das Tool -- das einzige seiner Art, das ich kenne -- kann man unter http://www.flounder.com/localeexplorer.zip kostenlos herunterladen; nach dem Entpacken findest du LocaleExplorer.exe im Unterverzeichnis mvp_tips\LocaleExplorer\Unicode_Release.
Damit kannst du auch die Kennung deiner benötigten Chinesisch-Variante ermitteln.
Die Wochentagsnamen erhältst du, wenn du als Parameter nInfoType einen der Werte aus dem Bereich 0x2A ... 0x30 übergibst
( 0x2A = Montag ).
Gibt es im Chinesischen auch Abkürzungen für die Wochentagsnamen? Dann wären stattdessen 0x31 bis 0x37 angesagt.
Andere Parameterwerte (für Monatsnamen und vieles mehr) findest du bei Bedarf unter
http://msdn.microsoft.com/en-us/library ... nd%29.aspx
Gruss
Günter
das müsste ganz ohne Resource Hacker ( ) mit GetLocaleInfoA aus kernel32.dll gehen, siehe auch
http://msdn.microsoft.com/en-us/library ... nd%29.aspx
also in etwa
Code: Alles auswählen
/* Diese Funktion gibt einen Leerstring zurück,
falls das System eine gegebene Sprachkennung nicht unterstützt,
oder falls ein Parameterfehler vorliegt.*/
FUNCTION GetLocaleInfo( nLanguage, nInfoType )
local rc
local cData
local nLen
nLen := 50 // nehmen wir mal an
cData := space( nLen )
rc := GetLocaleInfoA( nLanguage, nInfoType, @cData, nLen )
/*
Korrekterweise müsste man die Länge des Strings, der per Referenz zurück erwartet wird, vorher ermitteln:
nLen := GetLocaleInfoA( nLanguage, nInfoType, " ", 0 )
cData := space( nLen )
rc := GetLocaleInfoA( nLanguage, nInfoType, @cData, nLen )
*/
return left( cData, rc )
Code: Alles auswählen
dllfunction GetLocaleInfoA( nLanguage, nInfoType, @cData, nLenData ) ;
using stdcall from kernel32.dll
Welche Sprachen (zumindest für die Anzeige von Tages- und Monatsnamen und ähnliche Zwecke) auf einem System verfügbar sind, zeigt z.B. das Tool LocaleExplorer von http://www.flounder.com in den Tab-Panels "EnumSystemLocales" und "CalendarInfo". Auch zeigt das Tab-Panel "EnumLanguageGroupLocales" die unterschiedlichen Kennungen nach Sprachfamilien untergliedert und nach Sprachen sortiert. Das Tool -- das einzige seiner Art, das ich kenne -- kann man unter http://www.flounder.com/localeexplorer.zip kostenlos herunterladen; nach dem Entpacken findest du LocaleExplorer.exe im Unterverzeichnis mvp_tips\LocaleExplorer\Unicode_Release.
Damit kannst du auch die Kennung deiner benötigten Chinesisch-Variante ermitteln.
Die Wochentagsnamen erhältst du, wenn du als Parameter nInfoType einen der Werte aus dem Bereich 0x2A ... 0x30 übergibst
( 0x2A = Montag ).
Gibt es im Chinesischen auch Abkürzungen für die Wochentagsnamen? Dann wären stattdessen 0x31 bis 0x37 angesagt.
Andere Parameterwerte (für Monatsnamen und vieles mehr) findest du bei Bedarf unter
http://msdn.microsoft.com/en-us/library ... nd%29.aspx
Gruss
Günter
Zuletzt geändert von Günter Beyes am Do, 23. Jul 2009 14:38, insgesamt 1-mal geändert.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CDoW()
Analog "denken"Jan hat geschrieben:klar, die Wochentage stehen oben. Aber mit welchem Tag fängt die chinesische Woche an? Montag wie bei uns? Oder Sonntag wie bei den Amis? Oder noch was anderes? und da ich die chinesischen Schriftzeichen wie gesagt nicht wirklich entziffern kann hat das Bild mir eigentlich nix gesagt in Bezug auf Dein Problem.
beide Bilder sind doch gleich, also muss die Beschriftung "analog" sein
@Tom
klar habe ich ja
FUNCTION MYCDOW(dDate)
LOCAL nTag := DOW(dDate)
LOCAL cRet := ""
IF ID_CHINA
DO CASE
CASE nTag = 1 ; cRet := "琍戳ら"
CASE nTag = 2 ; cRet := "琍戳"
CASE nTag = 3 ; cRet := "琍戳"
CASE nTag = 4 ; cRet := "琍戳"
CASE nTag = 5 ; cRet := "琍戳"
CASE nTag = 6 ; cRet := "琍戳き"
CASE nTag = 7 ; cRet := "琍戳せ"
ENDCASE
ELSE
DO CASE
CASE nTag = 1 ; cRet := "Sonntag"
CASE nTag = 2 ; cRet := "Montag"
CASE nTag = 3 ; cRet := "Dienstag"
CASE nTag = 4 ; cRet := "Mittwoch"
CASE nTag = 5 ; cRet := "Donnerstag"
CASE nTag = 6 ; cRet := "Freitag"
CASE nTag = 7 ; cRet := "Samstag"
ENDCASE
ENDIF
RETURN cRet
aber an dem Beispiel, was FALSCH ist, siehst du das Problem. Ich kann es nur auf dem
Notebook wo chinesiches OS() drauf ist, machen. schon ein copy/paste wie hier gibt
falsche Ergebnisse.
die Antwort von Steffen zeigt doch das Alaska da noch was "fehlt"
@Guenter (sorry hier keine Umlaute)
JA ich dachte mir doch doch das da was gehen muss, den der Codejock Calender zeigt es ja "richtig" an.
Ich werde mir erlauben deine Msg an Steffen weiter zu leiten,Danke
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: CDoW()
Jimmy, ich gebs auf. Ich seh da nix gleiches, und chinesisch kann ich immer noch nicht. Aber da Du ja jetzt eine Lösung hast, können wir das auch lassen.AUGE_OHR hat geschrieben:Analog "denken"
beide Bilder sind doch gleich, also muss die Beschriftung "analog" sein
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: CDoW()
Hi Jimmy,
hat du mal probiert, was SetLocale( NLS_SDAYNAME1 ) in deiner Anwendungsumgebung auf dem chinesischen und nicht-chinesischen OS ausgibt? Es sollte der Name für "Montag" sein.
Gruss
Günter
hat du mal probiert, was SetLocale( NLS_SDAYNAME1 ) in deiner Anwendungsumgebung auf dem chinesischen und nicht-chinesischen OS ausgibt? Es sollte der Name für "Montag" sein.
Gruss
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CDoW()
auf dem German OS() bekomme ich 0407 Montag aber auf dem chinesischen OS() bekomme ich und das ist falsch, aber frage mich nicht "was" da steht (das muss ich erst erfragen) ...Günter Beyes hat geschrieben:hat du mal probiert, was SetLocale( NLS_SDAYNAME1 ) in deiner Anwendungsumgebung auf dem chinesischen und nicht-chinesischen OS ausgibt? Es sollte der Name für "Montag" sein.
da der "Code" aber der selbe ist "müsste" die erste Zeile sowas wie "0407" sein und die 2nd Reihe
sieht mir nicht wie "Donnerstag" aus"
@Jan : die Beschriftung mit "-" (querstrich) ist Montag, die mit "=" (2x querstrich) ist Dienstag
und mit 3x querstrich (habe ich nicht auf der Tastatur) wäre Mittwoch ...
Code: Alles auswählen
#include "DLL.CH"
#include "OS.CH"
#include "NLS.CH"
/* Diese Funktion gibt einen Leerstring zur³ck,
falls das System eine gegebene Sprachkennung nicht unterst³tzt,
oder falls ein Parameterfehler vorliegt.*/
#define Montag 0x2A
#define Dienstag 0x2B
#define Mittwoch 0x2C
#define Donnerstag 0x2D
#define Freitag 0x2E
#define Samstag 0x2F
#define Sonntag 0x30
#define Mo 0x31
#define Di 0x32
#define Mi 0x33
#define Do 0x34
#define Fr 0x35
#define Sa 0x36
#define So 0x37
#define LOCALE_INVARIANT 0x007F
#define LOCALE_SYSTEM_DEFAULT 0x0800
#define LOCALE_USER_DEFAULT 0x0400
// VISTA and later
#define LOCALE_CUSTOM_DEFAULT 0x0C00
#define LOCALE_CUSTOM_UI_DEFAULT 0x1400
#define LOCALE_CUSTOM_UNSPECIFIED 0x1000
#define CAL_GREGORIAN 1 // Gregorian (localized)
#define CAL_GREGORIAN_US 2 // Gregorian (English strings always)
#define CAL_JAPAN 3 // Japanese Emperor Era
#define CAL_TAIWAN 4 // Taiwan calendar
#define CAL_KOREA 5 // Korean Tangun Era
#define CAL_HIJRI 6 // Hijri (Arabic Lunar)
#define CAL_THAI 7 // Thai
#define CAL_HEBREW 8 // Hebrew (Lunar)
#define CAL_GREGORIAN_ME_FRENCH 9 // Gregorian Middle East French
#define CAL_GREGORIAN_ARABIC 10 // Gregorian Arabic
#define CAL_GREGORIAN_XLIT_ENGLISH 11 // Gregorian transliterated English
#define CAL_GREGORIAN_XLIT_FRENCH 12 // Gregorian transliterated French
#define CAL_UMALQURA 23 // Windows Vista and later: Um Al Qura (Arabic lunar) calendar
DLLFUNCTION GetLocaleInfoA( nLanguage, nInfoType, @cData, nLenData ) using stdcall from kernel32.dll
PROCEDURE MAIN
LOCAL cCountry
LOCAL ID_CHINA
LOCAL x
cCountry := SetLocale( NLS_ICOUNTRY )
IF VAL( cCountry ) = 49
ID_CHINA := .F.
ELSE
ID_CHINA := .T.
ENDIF
DO CASE
CASE OS( OS_FAMILY ) == "WIN9X"
IF ID_CHINA == .T.
? x := GetLocaleInfo( LOCALE_USER_DEFAULT, CAL_TAIWAN )
ELSE
? x := GetLocaleInfo( LOCALE_USER_DEFAULT, CAL_GREGORIAN )
ENDIF
CASE OS( OS_FAMILY ) == "WINNT"
IF ID_CHINA == .T.
? x := GetLocaleInfo( LOCALE_USER_DEFAULT, CAL_TAIWAN )
ELSE
? x := GetLocaleInfo( LOCALE_USER_DEFAULT, CAL_GREGORIAN )
ENDIF
CASE OS( OS_FAMILY ) == "VISTA"
IF ID_CHINA == .T.
? x := GetLocaleInfo( LOCALE_CUSTOM_DEFAULT, CAL_TAIWAN )
ELSE
? x := GetLocaleInfo( LOCALE_CUSTOM_DEFAULT, CAL_GREGORIAN )
ENDIF
OTHERWISE
ENDCASE
? SetLocale( NLS_SDAYNAME1 )
WAIT
RETURN
FUNCTION GetLocaleInfo( nLanguage, nInfoType )
local rc
local cData
local nLen
nLen := 50 // nehmen wir mal an
cData := space( nLen )
rc := GetLocaleInfoA( nLanguage, nInfoType, @cData, nLen )
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: CDoW()
Hi Jimmy,
Der Präprozessor macht aus CAL_GREGORIAN und CAL_TAIWAN die Werte 1 und 4. GetLocaleInfo akzeptiert die zwar, sie haben aber per Dokumentation nichts mit dem Kalender zu tun.
"0407" ist die Sprachkennung für "Deutsch (Deutschland)"; ist
dann "Chinesisch (Taiwan)" ?
Gruss
Günter
was erwartest du hier zu sehen?Code: Alles auswählen
#define CAL_GREGORIAN 1 // Gregorian (localized) #define CAL_TAIWAN 4 // Taiwan calendar IF ID_CHINA == .T. ? x := GetLocaleInfo( LOCALE_USER_DEFAULT, CAL_TAIWAN ) ELSE ? x := GetLocaleInfo( LOCALE_USER_DEFAULT, CAL_GREGORIAN ) ENDIF
Der Präprozessor macht aus CAL_GREGORIAN und CAL_TAIWAN die Werte 1 und 4. GetLocaleInfo akzeptiert die zwar, sie haben aber per Dokumentation nichts mit dem Kalender zu tun.
Code: Alles auswählen
#define LOCALE_ILANGUAGE 1 // Language identifier with a hexadecimal value
#define LOCALE_SNATIVELANGNAME 4 // Native name of language
Gruss
Günter
-
- Rekursionen-Architekt
- Beiträge: 164
- Registriert: Mo, 09. Jan 2006 17:06
- Wohnort: Paderborn
- Hat sich bedankt: 2 Mal
- Kontaktdaten:
Re: CDoW()
Hallo Jimmy,
Vielleicht stimmen die Beschriftungen doch?
Hans
das stimmt nicht, beim deutschen Kalender fängt die Woche mit Montag (z.B. 20.07) an, bei deinem chinesischen Kalender mit Sonntag (19.07).Analog "denken"
beide Bilder sind doch gleich, also muss die Beschriftung "analog" sein
Vielleicht stimmen die Beschriftungen doch?
Hans
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: CDoW()
Hans,
genau das wollte ich weiter oben sagen. Leider war das für Jimmy nicht so eindeutig.
Jan
genau das wollte ich weiter oben sagen. Leider war das für Jimmy nicht so eindeutig.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CDoW()
@Hans und Jan
Ja , jetzt verstehe ich was ihr meint. Ich meinte nur die "analogie" zwischen Calender Beschriftung
und dem Browser wo ich ja das Problem habe.
Ich gebe ja zu, wie bei allem neuen, das ich es noch nicht "verstehe" und es einfach nur probiere,
aber ich habe scheinbar ja noch nicht mal die Konstanten die ich wohl benötige.
Nun fange ich aber zumindest an zu verstehen warum Alaska da einen grossen Bogen drumrum
gemacht hat. Eine "worldwide" XppNAT wird wohl doch nicht "so einfach" zu realisieren sein.
Obwohl das wohl eher eine Sache von Alaska ist (habe es ja schon in die Wishgroup geschrieben)
würde ich dennoch gerne raus bekommen "wie" das nun funktioniert und welche Konstanten ich
dafür benötige. also wenn jemand (= Günter) weiter Tips hätte ... danke.
Ja , jetzt verstehe ich was ihr meint. Ich meinte nur die "analogie" zwischen Calender Beschriftung
und dem Browser wo ich ja das Problem habe.
gute Frage ... keine AhnungGünter Beyes hat geschrieben:was erwartest du hier zu sehen?
uups ... dann bin ich auf dem "Holzweg" ?Günter Beyes hat geschrieben:Der Präprozessor macht aus CAL_GREGORIAN und CAL_TAIWAN die Werte 1 und 4. GetLocaleInfo akzeptiert die zwar, sie haben aber per Dokumentation nichts mit dem Kalender zu tun.
Ich gebe ja zu, wie bei allem neuen, das ich es noch nicht "verstehe" und es einfach nur probiere,
aber ich habe scheinbar ja noch nicht mal die Konstanten die ich wohl benötige.
Nun fange ich aber zumindest an zu verstehen warum Alaska da einen grossen Bogen drumrum
gemacht hat. Eine "worldwide" XppNAT wird wohl doch nicht "so einfach" zu realisieren sein.
Obwohl das wohl eher eine Sache von Alaska ist (habe es ja schon in die Wishgroup geschrieben)
würde ich dennoch gerne raus bekommen "wie" das nun funktioniert und welche Konstanten ich
dafür benötige. also wenn jemand (= Günter) weiter Tips hätte ... danke.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: CDoW()
Hallo Jimmy,
die Beschreibung der Funktionsparameter und die Namen und Bedeutung der Konstanten findest du in der MSDN-Doku, leider nicht die dazugehörigen #defines. Ich hänge mal eine passende Include-Datei an.
Deine Bemerkung mit dem Holzweg verstehe ich nicht ganz. Du wolltest doch wohl irgendwas bezüglich des Kalenders abfragen? Ich war nur etwas irritiert, dass du der Funktion "Hausnummern" als Parameter vorsetzt. Die Werte stehen doch auch im Netz...
Den Kalendertyp kannst du mit LOCALE_ICALENDARTYPE ( 0x1009 ) abfragen, den ersten Tag der Woche mit LOCALE_IFIRSTDAYOFWEEK ( 0x100C )
Übrigens holt xppnat.dll laut der Hilfe zu SetLocale() wohl die meisten Einstellungen vom Betriebssystem!
Gruss
Günter
die Beschreibung der Funktionsparameter und die Namen und Bedeutung der Konstanten findest du in der MSDN-Doku, leider nicht die dazugehörigen #defines. Ich hänge mal eine passende Include-Datei an.
Deine Bemerkung mit dem Holzweg verstehe ich nicht ganz. Du wolltest doch wohl irgendwas bezüglich des Kalenders abfragen? Ich war nur etwas irritiert, dass du der Funktion "Hausnummern" als Parameter vorsetzt. Die Werte stehen doch auch im Netz...
Den Kalendertyp kannst du mit LOCALE_ICALENDARTYPE ( 0x1009 ) abfragen, den ersten Tag der Woche mit LOCALE_IFIRSTDAYOFWEEK ( 0x100C )
Übrigens holt xppnat.dll laut der Hilfe zu SetLocale() wohl die meisten Einstellungen vom Betriebssystem!
Gruss
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CDoW()
erstmal DANKE
nun habe ich es wohl begriffen, dein Hinweis zu SetLocale() hat mir die Konstanten gezeigt die ich
verwenden muss. Zusammen mit dem LocaleExplorer ( WOW !!!) denke ich hab ich nun verstanden
was du mit "Hausnummer" meintest.
"analog" zum SetLocale() Help Demo muss man statt den NLS_* die LOCALE_* verwenden wobei
ich NLS_SYES und NLS_SNO ("J","N") nicht finde ... aber das hat ja auch nichts mit dem Datum
zu tun.
hiermit "müsste" man nun die gesuchten Werte bekommenLOCALE_SYSTEM_DEFAULT oder LOCALE_USER_DEFAULT ist nur noch die Frage
... irgendwas muss wohl doch was bei Xbase++ "sein", den es gibt Unteschiede ich würde mal sagen das die Jungs von Alaska "nur" mit 2stelligen Country Code rechnen
ich habe mir noch nicht, per Resourcen Hacker, die bestreffenden Stellen angesehen,
was da wohl fuer Konstanten LOCALE_* stehen... hm ...
nun habe ich es wohl begriffen, dein Hinweis zu SetLocale() hat mir die Konstanten gezeigt die ich
verwenden muss. Zusammen mit dem LocaleExplorer ( WOW !!!) denke ich hab ich nun verstanden
was du mit "Hausnummer" meintest.
"analog" zum SetLocale() Help Demo muss man statt den NLS_* die LOCALE_* verwenden wobei
ich NLS_SYES und NLS_SNO ("J","N") nicht finde ... aber das hat ja auch nichts mit dem Datum
zu tun.
hiermit "müsste" man nun die gesuchten Werte bekommen
Code: Alles auswählen
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_ICOUNTRY )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SLIST )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_STHOUSAND )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SCURRENCY )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRENCY )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRDIGITS )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDATE )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_IDATE )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_ICENTURY )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_STIME )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_ITIME )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_S1159 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_S2359 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDAYNAME1 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDAYNAME2 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDAYNAME3 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDAYNAME4 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDAYNAME5 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDAYNAME6 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SDAYNAME7 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME1 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME2 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME3 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME4 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME5 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME6 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME7 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME8 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME9 )
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME10)
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME11)
? x := GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHNAME12)
JA ... aber ... es ist im XbpBrowse "falsch"Günter Beyes hat geschrieben:Übrigens holt xppnat.dll laut der Hilfe zu SetLocale() wohl die meisten Einstellungen vom Betriebssystem!
... irgendwas muss wohl doch was bei Xbase++ "sein", den es gibt Unteschiede ich würde mal sagen das die Jungs von Alaska "nur" mit 2stelligen Country Code rechnen
ich habe mir noch nicht, per Resourcen Hacker, die bestreffenden Stellen angesehen,
was da wohl fuer Konstanten LOCALE_* stehen... hm ...
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: CDoW()
Hi Jimmy,
zunächst eine kleine Korrektor zu GetLocaleInfo(). Damit dürfte das abwegige Zeichen am Stringende beseitigt sein.
Und nein, Alaska rechnet wohl nicht mit nur zweistelligen Länderkennungen. SetLocale() erkennt dein System offenbar nicht als taiwanesisch an -- NLS_ICOUNTRY = 86 ist die Landeskennung der Volksrepublik China! Andererseits erkennt GetLocaleInfo() ja wie es scheint korrekt die taiwanesischen Einstellungen als Systemdefault, so dass es eventuell doch ein Fall für Alaska wäre. Hoffentlich wird kein Politikum daraus -- SCNR
Gruss
Günter
zunächst eine kleine Korrektor zu GetLocaleInfo(). Damit dürfte das abwegige Zeichen am Stringende beseitigt sein.
Code: Alles auswählen
FUNCTION GetLocaleInfo( nLCID, nInfoType )
local rc
local cData
local nLen
// Länge des Strings, der per Referenz zurück erwartet wird, ermitteln:
nLen := GetLocaleInfoA( nLCID, nInfoType, " ", 0 )
cData := space( nLen )
rc := GetLocaleInfoA( nLCID, nInfoType, @cData, nLen )
// abschließende binäre Null beseitigen
return left( cData, rc-1 )
LOCALE_USER_DEFAULT dürfe besser passen. Man kann auf einem System mehrere Sprachen installieren, und die Gebietsschemaeinstellung kann benutzerspezifisch sein.LOCALE_SYSTEM_DEFAULT oder LOCALE_USER_DEFAULT ist nur noch die Frage
Und nein, Alaska rechnet wohl nicht mit nur zweistelligen Länderkennungen. SetLocale() erkennt dein System offenbar nicht als taiwanesisch an -- NLS_ICOUNTRY = 86 ist die Landeskennung der Volksrepublik China! Andererseits erkennt GetLocaleInfo() ja wie es scheint korrekt die taiwanesischen Einstellungen als Systemdefault, so dass es eventuell doch ein Fall für Alaska wäre. Hoffentlich wird kein Politikum daraus -- SCNR
Gruss
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CDoW()
Danke, Danke, Danke
das mit dem 2-stellig war nur eine Überlegung von mir als ich die 3-stellige sah.
Da aber unser Ergebniss "richtig" ist muss das von Alaska "falsch" sein
Tja wer hätte mit sowas gerechnet, die Jungs von Alaska auf jeden Fall nicht.Günter Beyes hat geschrieben:Und nein, Alaska rechnet wohl nicht mit nur zweistelligen Länderkennungen. SetLocale() erkennt dein System offenbar nicht als taiwanesisch an -- NLS_ICOUNTRY = 86 ist die Landeskennung der Volksrepublik China! Andererseits erkennt GetLocaleInfo() ja wie es scheint korrekt die taiwanesischen Einstellungen als Systemdefault, so dass es eventuell doch ein Fall für Alaska wäre.
das mit dem 2-stellig war nur eine Überlegung von mir als ich die 3-stellige sah.
Da aber unser Ergebniss "richtig" ist muss das von Alaska "falsch" sein
nicht wenn Alaska den BUG eingesteht und ihn schnell "kostenlos" behebt ...Günter Beyes hat geschrieben:Hoffentlich wird kein Politikum daraus -- SCNR
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16511
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: CDoW()
Hallo Jimmy,
Viele Grüße,
Martin
das war sicherlich nicht auf Alaska gemünzt, sondern auf das Problem VR China / TaiwanAUGE_OHR hat geschrieben:nicht wenn Alaska den BUG eingesteht und ihn schnell "kostenlos" behebt ...Günter Beyes hat geschrieben:Hoffentlich wird kein Politikum daraus -- SCNR
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16511
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: CDoW()
Jimmy,
Du hast Steffens Antwort in der Newsgroup gelesen und verstanden?
Martin
Du hast Steffens Antwort in der Newsgroup gelesen und verstanden?
Viele Grüße,Wenn Du SetLocale() und GetLocalInfo() mit anderen Sprachen nutzen willst, mußt Du sicherstellen, dass Du in ANSI arbeitest
Also SET CHARSET TO ANSI und Schriftart und dessen codepage für Dein Ausgabefenster entsprechend setzen (XbpFont:CodePage)
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.