AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Gültigkeitsbereich des Decimalseparator
Thema durchsuchen
Ansicht
Themen-Optionen

Gültigkeitsbereich des Decimalseparator

Offene Frage von "Turbo78"
Ein Thema von winx · begonnen am 23. Mär 2006 · letzter Beitrag vom 21. Nov 2010
Antwort Antwort
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#1

Gültigkeitsbereich des Decimalseparator

  Alt 23. Mär 2006, 10:59
Hallo,

wenn ich in einer Funktion meines Programmes
den Decimalseparator setze, gilt er dann
Windowsweit, programmweit oder nur in dieser
funktion???

Danke,
winx
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Gültigkeitsbereich des Decimalseparator

  Alt 23. Mär 2006, 11:05
Hai winx,
meines wissens gilt er in deinem Programm da Delphi ja nicht bei jedem Funktionsaufruf der diese Variable auswertet sich die Daten neu von Windows holt sondern nur einmal beim Programm start.

Wenn dein Programm also nicht mit threads oder Timern usw. arbeitet gilt die Änderung "nur" in deiner Funktion. Du musst aber natürlich am ende der Funktion den Dec-Seperator wieder auf den ursprungswert setzen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.050 Beiträge
 
Delphi 12 Athens
 
#3

Re: Gültigkeitsbereich des Decimalseparator

  Alt 23. Mär 2006, 11:54
Zitat von Sharky:
Du musst aber natürlich am ende der Funktion den Dec-Seperator wieder auf den ursprungswert setzen.
Also kurz gesagt, der gilt Programmweit ... die Variable für den Decimalseparator wird beim Programmstart von Windows erfragt und da es sich wirklich nur um eine Variable handelt, wird beim Ändern dieser nicht der Wert in der Windows-Registry verändert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Turbo78

Registriert seit: 19. Apr 2010
Ort: Neuried
32 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Gültigkeitsbereich des Decimalseparators

  Alt 21. Nov 2010, 11:59
Also kurz gesagt, der gilt Programmweit ... die Variable für den Decimalseparator wird beim Programmstart von Windows erfragt und da es sich wirklich nur um eine Variable handelt, wird beim Ändern dieser nicht der Wert in der Windows-Registry verändert.
Mein Delphi-Programm arbeitet mit zwei anderen Programmen zusammen. Ein davon ist Fortran 5 DOS und das andere VB. Also, das DOS Programm arbeitet mit dem DecimalSeparator '.' (und TausendSeparator ','). Ich habe gelernt, das die entsprechenden Variablen in Delphi nur zur Laufzeit gültig sind, sodass ich bei der Datenaufbereitung für das DOS-Programm die Variablen dem entsprechend setze.
Das Problem macht aber das VB-Programm (es arbeitet ebenfalls mit dem DOS-Programm zusammen), welches die beiden Separatoren fest in Windows verändert.
Da mich diese feste Umstellung stört, möchte ich sie im Programm zurücksetzen.
Die Frage: Kann man und wie in einem Delphi-Programm diese beiden Variablen (eigentlich die "Regionale Einstellungen") fest verändern? Falls dies in Delphi nicht gehen sollte, kann mir jemand den Tipp geben, wie man dies in VB macht (das VB Programm macht dies nämlich!).
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.050 Beiträge
 
Delphi 12 Athens
 
#5

AW: Gültigkeitsbereich des Decimalseparator

  Alt 21. Nov 2010, 12:10
Natürlich kannst du bei Programmstart diese beiden Variablen immer ändern, so daß sie deinen Wünschen entsprechen.

Achtung: Wenn in Windows dieses systemweit geändert wird, dann wird meistens eine Änderungsmeldung an alle Programme geschickt und Delphi reagiert darauf (zumindestens "aktuellere" Delphi-Versionen) und läd dann die neuen Werte in die Variablen rein.
> du müßtest also auch darauf reagieren und Dieses in deinem Programm erneut überschreiben.

PS: Bei einigen Funktionen kannst du auch direkt einen TFormatSettings-Record mitgeben.
Dessen Einstellungen werden dann immer genutzt, egal was in diesen globalen Variablen drinsteht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

AW: Gültigkeitsbereich des Decimalseparator

  Alt 21. Nov 2010, 12:10
Hallo,

Das Programm verwendet wahrscheinlich SetLocaleInfo + LOCALE_SDECIMAL um das Dezimaltrennzeichen zu ändern.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Gültigkeitsbereich des Decimalseparator

  Alt 21. Nov 2010, 12:14
IMHO sollte man Fehler nicht Fehlern korrigieren, eine Veränderung der Windowseinstellungen halte ich für nicht sinnvoll, kannst das VB-Programm anpassen?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Turbo78

Registriert seit: 19. Apr 2010
Ort: Neuried
32 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Gültigkeitsbereich des Decimalseparator

  Alt 21. Nov 2010, 12:26
IMHO sollte man Fehler nicht Fehlern korrigieren, eine Veränderung der Windowseinstellungen halte ich für nicht sinnvoll, kannst das VB-Programm anpassen?
Kann ich leider nicht, da das Programm nicht mir gehört.
Also, ich bin auch der Meinung, dass das VB-Programm einen Fehler macht, aber kann nichts dagegen tun als entweder im Windows die Regionale Einstellungen wieder zu ändern (mühsam und manuell!), oder ,wass mir viel lieber wäre, dies per Programm zu tun.

Deshalb nochmals: Wie mache ich dies in einem Delphi-Programm, oder, wenn dies nicht geht, wie macht man dies in einem VB-Programm?
Da ich von VB wenig Ahnung habe, so wäre hier das Code sehr hilfsreich, eine DLL noch besser.
Danke, Toni
  Mit Zitat antworten Zitat
Turbo78

Registriert seit: 19. Apr 2010
Ort: Neuried
32 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Gültigkeitsbereich des Decimalseparator

  Alt 21. Nov 2010, 18:10
Hallo,

Das Programm verwendet wahrscheinlich SetLocaleInfo + LOCALE_SDECIMAL um das Dezimaltrennzeichen zu ändern.
Hallo Thomas,

ist SetLocaleInfo + LOCALE_SDECIMAL in einer DLL zu finden, oder Etwas aus VB?
Gibt es auch was vergleichbares für TausendSeparator?

Danke, Toni
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz