AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AnsiString und String

Ein Thema von ATS3788 · begonnen am 23. Dez 2012 · letzter Beitrag vom 24. Dez 2012
Antwort Antwort
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

AnsiString und String

  Alt 23. Dez 2012, 18:45
Hallo
Frohe Weihnachten

Gerade ärger ich mich mal wieder mit
Zitat:
AnsiString und String
Warum hat man seinerzeit nicht einfach String
als AnsiString, Unicode gelassen und nur WideString
erweitert.

Was ist eure Meinung dazu
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#2

AW: AnsiString und String

  Alt 23. Dez 2012, 19:23
Abgesehen davon, daß jede Diskussion darüber sowieso zu nichts führt, komme ich mit der aktuellen Lösung sehr gut klar. Die Migration nach Unicode ging nämlich ohne nennenswerten Aufwand quasi von allein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.650 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: AnsiString und String

  Alt 23. Dez 2012, 19:30
Warum hat man seinerzeit nicht einfach String
als AnsiString, Unicode gelassen und nur WideString
erweitert.
String ist nun einmal ein Metadatentyp. Wer einen konkreten Typ braucht, der muss eben den auch nehmen.

Dass Integer unter 64-Bit jetzt nicht 64 Bit hat, ist sowieso erstens inkonsequent und führt zweitens an vielen Stellen zu Problemen bei der Migration, wenn man sich genau an diese Regel gehalten hat.
Aber naja, das Kind ist ja nun in den Brunnen gefallen, da muss man eben an allen Ecken und Enden jetzt nachbessern, die eigentlich korrekt waren...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: AnsiString und String

  Alt 23. Dez 2012, 21:47
Warum hat man seinerzeit nicht einfach String
als AnsiString, Unicode gelassen und nur WideString
erweitert.
Weil Emba bei einer solchen Lösung einige Mannjahre mehr in die Entwicklung von D2009 hätte stecken müssen.
So konnte man die Definition auf String = UnicodeString Änderung und musste "nur" noch den Compilerwarnungen nachgehen.
Wenn String = Ansistring gebliben wäre hätte man alle VCL-Komponenten mehr oder minder Zeilenweise anpassen müssen bzw dopppelte Klasen (TEdit und TUnicodeEdit) aufbauen müssen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#5

AW: AnsiString und String

  Alt 23. Dez 2012, 22:03
Weil Emba bei einer solchen Lösung einige Mannjahre mehr in die Entwicklung von D2009 hätte stecken müssen.
Selbiges gilt für uns alle.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#6

AW: AnsiString und String

  Alt 24. Dez 2012, 11:28
Was mich bei Strings nervt bzw. genervt hat, ist, daß die Compiler-Direktive $H bzw. $LONGSTRINGS trotz anderseitem Versprechen der Referenz

[Zitat D2009] "Sie können den Typ ShortString aktivieren, indem Sie die Direktive {$H-} verwenden." [Zitat-Ende]

keine Wirkung hat. Egal wie man schaltet, sizeof(string) ist immer = 4, also Pointer und kein versprochener kurzer String ist und kann Längen > 255.

Es wird da vergessen zu erwähnen, daß es auch eine Compiler-Option "Standardmäßig lange Strings" gibt, die default auf TRUE steht.

Aber man lernt es ja schnell, wenn man nach der Übernahme alter Quellcodes auf die Schnauze gefallen ist.

  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#7

AW: AnsiString und String

  Alt 24. Dez 2012, 11:47
Was mich bei Strings nervt bzw. genervt hat, ist, daß die Compiler-Direktive $H bzw. $LONGSTRINGS trotz anderseitem Versprechen der Referenz
Aus der Delphi-Referenz:

Zitat:
Hinweis: Die Direktive LONGSTRINGS ist veraltet und wird vom Compiler ignoriert. Aktuelle Delphi-Compiler verwenden einen langen String-Typ, der auf Unicode-Zeichen (UnicodeString) basiert. Es wird die Verwendung des Standard-String-Typs (UnicodeString) empfohlen. Verwenden Sie für den älteren String-Typ explizit die Typen ShortString oder string[<Anzahl>].
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#8

AW: AnsiString und String

  Alt 24. Dez 2012, 12:09
Oh Ha OK

Und ich dachte es umgekehrt.
Nun verstehe ich warum das so portiert wurde.

Frohe Weihnachten
Martin MIchael
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#9

AW: AnsiString und String

  Alt 24. Dez 2012, 12:49
Zitat:
Hinweis: Die Direktive LONGSTRINGS ist veraltet und wird vom Compiler ignoriert. Aktuelle Delphi-Compiler verwenden einen langen String-Typ, der auf Unicode-Zeichen (UnicodeString) basiert. Es wird die Verwendung des Standard-String-Typs (UnicodeString) empfohlen. Verwenden Sie für den älteren String-Typ explizit die Typen ShortString oder string[<Anzahl>].
Steht so leider nicht in meiner Hilfe hier. Außerdem steht hier auch, daß der lange String defaultmäßig AnsiString sei - was auch nicht stimmt, weil UnicdeString benutzt wird. Evtl. sollte ich mal updaten.

Es wird aber darauf hingewiesen:
[Zitat]"Außerdem können kurze String-Typen als string[255] oder ShortString deklariert werden. Diese Typen sind eindeutig und von der Direktive $H unabhängig."[Zitat-Ende] was ich dann aus eigener Erfahrung bei alten Quellcodes eh schon gemacht habe.

Da muß man halt durch, wenn man von Borland Pascal 7(8) direkt auf Delphi 2009 umsteigt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#10

AW: AnsiString und String

  Alt 24. Dez 2012, 13:45
Steht so leider nicht in meiner Hilfe hier. Außerdem steht hier auch, daß der lange String defaultmäßig AnsiString sei - was auch nicht stimmt, weil UnicdeString benutzt wird. Evtl. sollte ich mal updaten.
Ich beziehe mich auf das docwiki - hier http://docwiki.embarcadero.com/RADSt...rings_(Delphi)

Da hat man eigentlich immer den aktuellen Stand.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 21:43 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