AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Deutsche Dezimal-Zahl in englisches Format bringen
Thema durchsuchen
Ansicht
Themen-Optionen

Deutsche Dezimal-Zahl in englisches Format bringen

Ein Thema von Ykcim · begonnen am 11. Jan 2018 · letzter Beitrag vom 17. Jan 2018
Antwort Antwort
Seite 2 von 2     12   
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#11

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 12. Jan 2018, 13:16
Und warum nimmst du nicht die Formatsettings

ALT:
Decimalseperator:='.';


aktuelles Delphi
Formatsettings.decimalseparator:='.'


ThousandSeparator
gibt die Tausendertrennzeichen an.
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#12

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 12. Jan 2018, 13:44
Was macht denn FillAdvGrid? Wenn du da das StringGrid manuell irgendwie befüllst, kannst du dass doch da ändern. Wie der Name schon sagt sind im StringGrid nur noch Strings und das wird halt so exportiert, wie es im StringGrid steht.

Dementsprechend (je nachdem was FillAdvGrid macht/ist) sind daher auch die FormatSettings Latte...
Ralph
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#13

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 12. Jan 2018, 17:23
Wie die CSV entsteht, ist wohl nur dort bestimmt: SG_Export.SaveToCSV
Ohne den Quelltext und / oder einer genauen Beschreibung dessen, wird es beim Raten bleiben. Innerhalb dieser Routine sind höchstwahrscheinlich die FormatSettings zu ändern (oder hat die Komponenten bereits entsprechende Attribute und / oder Methoden?
Ausführliche Doku zum TAdvStringGrid
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#14

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 16. Jan 2018, 07:58
Ich würde den CSV-Export nicht von dem ADVGrid machen lassen. In deinem FillAdvGrid gehst du doch wahrscheinlich deine ganzen Daten durch. Dann kannst du da doch auch gleich die CSV schreiben. Dann hast du volle Kontrolle darüber, was da rein kommt und bist nicht auf die Export-Routine des Grid angewiesen.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#15

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 16. Jan 2018, 08:12
sind denn die Zahlen auch als numerischer Wert im AdvStringGrid definiert oder als String?
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#16

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 16. Jan 2018, 10:22
Hallo, ich hatte mal ein ähnliches problem,
und hab das übel an der wurzel gepackt.
Der code ändert für das ganze system die interpretierung/darstellung der trennzeichen.

hier delphi 7 kompatibler code,
ich hoff es hilft.

edited:
hab den source entfernt da er, wie oben beschrieben "für das ganze system" war und nicht für dein lokales problem.
Bei Interesse, einfach nachfragen, in den situation wo ich es brauchte, und nach bearbeitung auch wieder zurückstellte,
half mir mein code aus der patsche, da mein übel = das system war.
ich nutzte diesen code in batch dateien. egal.

Geändert von Fukiszo (16. Jan 2018 um 11:05 Uhr) Grund: es erschien mir weise
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 16. Jan 2018, 10:46
Bloß nicht!
Dir fehlt - bei allem Respekt - die nötige Erfahrung, um ein Übel an der Wurzel zu packen, ohne selbst das nächstgrößere Übel darzustellen. Du änderst systemweite Einstellungen und ziehst damit für ein lokales Problem in Deiner Anwendung andere Programme in Mitleidenschaft, die dieses Problem ggf. gar nicht haben.

MNSDN schreibt zu "SetLocaleInfo()" ausdrücklich:
Zitat:
Caution Because this function modifies values for all applications, it should only be called by the regional and language options functionality of Control Panel, or a similar utility. If making an international change to system parameters, the calling application must broadcast the WM_SETTINGCHANGE message to avoid causing instabilities in other applications.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#18

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 16. Jan 2018, 11:10
Kann mir jemand sagen, wie ich die TFormatSettings umstellen kann, damit das StringGrid mit dem englischen Format arbeitet und dann hoffentlich die CSV-Datei korrekt erstellt wird. Im Moment wird die Dezimalzahl nämlich mit Hochkommas gekapselt ("3,45"), das die CSV das Komma als Seperator verwendet. Das hat zur Folge, dass beim "Load Data InFile" Befehl ab dem Komma abgeschnitten wird.
Code:
,"3,45",
ist doch das richtige CSV Format für das Zahlenformat 3,35. Ich vermute, dass das Problem eher bei der Methode "Load Data InFile" ein Problem vorliegt.
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 16. Jan 2018, 16:55
Das Problem liegt darin, das die SaveToCSV Funktion nicht wirklich "weiß" welche Daten in den Zellen stehen und sie daher einfach so abspeichert wie sie (in Stringform) eben vorliegen.

Wenn das Grid wie folgt befüllt wird (stark vereinfacht, statt FillAdvGrid):

Delphi-Quellcode:
procedure DemoFill;
var
  iy: Integer;
  ix: Integer;
  LFmt: TFormatSettings;
begin
  LFmt := TFormatSettings.Create;
  LFmt.DecimalSeparator := '.';
  for iy := 0 to AGd.RowCount-1 do
  begin
    for ix := 0 to AGd.ColCount-1 do
    begin
      AGd.Cells[ix,iy] := Format('%.6f', [ Random], LFmt);
    end;
  end;
end;
Dann kann man den Inhalt entsprechend abspeichern:

Delphi-Quellcode:
  AGd.Delimiter := ',';
// AGd.QuoteEmptyCells := FALSE; // leere Zellen nicht quoten
  AGd.SaveToCSV('D:\test.csv');

Nachteil, auch die Darstellung am Bildschirm ist dann in diesem Format.
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#20

AW: Deutsche Dezimal-Zahl in englisches Format bringen

  Alt 17. Jan 2018, 08:53
Code:
AdvStringgrid.ints[col,row] := 123;  // > csv = ... ,123, ...
AdvStringgrid.floats[col,row] := 123.456; // > csv = ... ,123.456, ...
AdvStringgrid.cells[col,row] := "123.456"; //   // > csv = ...,"123.456",... immer Strings!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:08 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