Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fehler mit Combobox und DelimitedText (https://www.delphipraxis.net/196346-fehler-mit-combobox-und-delimitedtext.html)

Rainer Wolff 14. Mai 2018 20:32

Fehler mit Combobox und DelimitedText
 
Als Hinweis/Warnung:

Ich bin bei der Übernahme eines XE-Projekts auf Tokyo mal wieder auf die Schnauze gefallen. In einem Formular wird eine DBCombobox als Nachschlageliste aus einem Ini-File mit einem Semikolon-separierten String gefüllt (Es handelt sich um verschiedene Default-Längenmaße, die über die Ini variabel belegt werden können, so was wie
Laengen = 450,0;550,5;680,2
).
Der String wird im FormCreate gesetzt, zusammen mit dem Setzen des Delimiters auf Semikolon. Funktioniert unter XE wunderbar (auch wenn ich das etwas anders lösen würde).
Unter Tokyo waren plötzlich meine Datenbankfelder leer, bei genauerer Betrachtung hat Delphi den Laengenstring falsch aufgesplittet (Komma als Trennzeichen).
Die Items waren im Designer bereits auf Werte gesetzt.

Abhilfe brachte, im Designer die Items-Liste zu löschen und nur aus der Ini zu initialisieren.

In den Tokyo-Sourcen ist ersichtlich, dass die Liste beim Neuzeichnen nochmal irgendwie zwischengespeichert wird, und der Delimiter wieder auf seinen Standardwert gesetzt wird, bevor die Ini-Werte gelesen werden. Daher dann das falsche Splitting.

Ich werde wohl noch versuchen, das in die Quality Central zu posten, aber musste den Hinweis auch hier mal loswerden.

mischerr 15. Mai 2018 06:54

AW: Fehler mit Combobox und DelimitedText
 
Hallo,

parse die Liste aus der Ini doch selbst und füge die Elemente einzeln hinzu.
Ich würde allerdings ein ClientDataset nehmen und auf eine DBLookupCombo wechseln.
Es scheint sich ja um ein Float-Field zu handeln - dann hätte man auch kein Problem mit Dezimaltrennzeichen z.B. im Englischen.

Rainer Wolff 15. Mai 2018 19:01

AW: Fehler mit Combobox und DelimitedText
 
Zitat:

Zitat von mischerr (Beitrag 1402112)
Hallo,

parse die Liste aus der Ini doch selbst und füge die Elemente einzeln hinzu.

Ich hab das Problem ja schon umfummelt (umgangen wär schon übertrieben)
Zitat:

Zitat von mischerr (Beitrag 1402112)
Ich würde allerdings ein ClientDataset nehmen und auf eine DBLookupCombo wechseln.

Nicht auf meinem Mist gewachsen, ich habs geerbt, ich würds wahrscheinlich auch in die DB stopfen, schon wegen Backup
Zitat:

Zitat von mischerr (Beitrag 1402112)
Es scheint sich ja um ein Float-Field zu handeln - dann hätte man auch kein Problem mit Dezimaltrennzeichen z.B. im Englischen.

quick and dirty halt, und auch nur ein Einzelprogramm

himitsu 16. Mai 2018 08:25

AW: Fehler mit Combobox und DelimitedText
 
Sprachabhängige Daten aus Dateien zu laden war noch niemals eine gute Idee.
Diese INI auf einem englichen System, bzw. in einem englischsprachigen Benutzerkonto. (anderer Benutzer oder ein Nuter hat seine Sprache umgestellt)

Zitat:

Der String wird im FormCreate gesetzt
Je nach Einstellung ist das auch nicht immer die gleiche Stelle (Delphi-Referenz durchsuchenTForm.OldCreateOrder) und gerade beim Upgrade der Delphi-Version kann sich sowas schnell mal ändern.


PS: LookupComboBox ... innen die "richtigen" Werte und angezeigt die sprachabhängige Version, in welcher es auch mal nicht gleich katastrophal endet, wenn es dort ein paar Konvertierungsproblemchen gibt.

SearchBot 18. Mai 2018 13:00

AW: Fehler mit Combobox und DelimitedText
 
Ich habe gute Erfahrungen gemacht, wenn ich StrictDelimiter auf true setze.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 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