Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi AnsiString-Warnungen in DB-Projekten (https://www.delphipraxis.net/169758-ansistring-warnungen-db-projekten.html)

Gloegg_FHBI 9. Aug 2012 19:57

AnsiString-Warnungen in DB-Projekten
 
Hallo,

Ich habe ein paar Projekte in denen ich mittels der DevArt MyDAC-Komponenten auf eine MySQL-DB zugreife. (Charset ist UTF8)
Selbst in den kleineren werde ich beim compilieren von Warnungen erschlagen, die auf "problematische" String/Ansistring-Umwandlungen deuten. (Und damit werden natürlich echte Warnungen leicht übersehen)

z.B. bei sowas:
Delphi-Quellcode:
 
qrItemsPriceFormat.Value := Format('%.2f',[qrItemsItemPrice.Value]);

oder sowas:
Delphi-Quellcode:
 
s := 'Soll der Artikel "' + dmData.qrArticleArticleName.Value + '" wirklich gelöscht werden?';

Die Warnungen haben natürlich recht, TStringField.Value ist vom Typ ansistring und implizite casts können da zu problemen führen.
Um die Warnungen zu umgehen könnte ich natürlich jedesmal explizit casten oder mit TEncoding arbeiten, aber das ist mir zu umständlich und verringert die Lesbarkeit des Codes. Gibt es nicht ne einfachere Methode?

Bernhard Geyer 9. Aug 2012 20:33

AW: AnsiString-Warnungen in DB-Projekten
 
Lass mal die persistenten Felder neu erstellen? AFAIK gibts hier auch sowas wie TWideStringField.

Uwe Raabe 9. Aug 2012 20:38

AW: AnsiString-Warnungen in DB-Projekten
 
Alternativ kannst du statt
Delphi-Quellcode:
.Value
auch
Delphi-Quellcode:
.AsString
schreiben.

Neumann 9. Aug 2012 20:41

AW: AnsiString-Warnungen in DB-Projekten
 
Anstatt xxx.value schreibe ich das immer xxx.asstring, dann ist Ruhe.

himitsu 9. Aug 2012 21:14

AW: AnsiString-Warnungen in DB-Projekten
 
Und selbst das mit dem Encoding ist nicht im Geringsten umständlich.

Du leitest dir entweder die Klassen ab und baust dir einfacher Property, worin das alles enthalten ist, oder du erweiterst die Klassen implizit über Class-Helper.


z.B. das was Emba in XE2 per Record-Methoden direkt in TRect und Co. integriert hat, hatte ich mir schon seit 2006 schon selbst gebstelt oder über über Record-Helper an fertige Records angehängt.

Gloegg_FHBI 10. Aug 2012 13:47

AW: AnsiString-Warnungen in DB-Projekten
 
Vielen Dank für die Antworten.

Meine Lösung sieht noch etwas anders aus.
Die TMyConnection hat eine Option "UseUnicode".
Sobald die aktiviert ist, werden TWideStringField / TWideMemoField statt TStringField / TMemoField verwendet.
Dann musste ich noch einmal die Felder in meinen Querise löschen und wieder hinzufügen und schon war ich die ganzen Warnungen los.


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