AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi VCL Unicode, AnsiString übergeben!
Thema durchsuchen
Ansicht
Themen-Optionen

VCL Unicode, AnsiString übergeben!

Ein Thema von Mavarik · begonnen am 19. Okt 2011 · letzter Beitrag vom 10. Jun 2013
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:30
Oder den String in eine temporäre Variable vom Type String, bzw. bei Übergabe doppelt casten.
SetTextBuf(PChar(String(Value))); .


Oder du stellst deinen Code auf Unicode um.



Wenn du außerhalb einen AnsiString oder einen PAnsiChar an eine String/UnicodeString-Variable, bzw. an soeinen Parameter übergibst, dann konvertiert Delphi das automatisch.


Zitat:
habe ich an vielen Stellen chinesische Schriftzeichen....
Vermutlich?
Delphi sollte dir genau sagen, daß es dort ein Problem gibt. (es müßte eine Compiler-Warnung vorhanden sein)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (19. Okt 2011 um 14:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.160 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:39
Oder den String in eine temporäre Variable vom Type String, bzw. bei Übergabe doppelt casten.
SetTextBuf(PChar(String(Value))); .


Oder du stellst deinen Code auf Unicode um.



Wenn du außerhalb einen AnsiString oder einen PAnsiChar an eine String/UnicodeString-Variable, bzw. an soeinen Parameter übergibst, dann konvertiert Delphi das automatisch.


Zitat:
habe ich an vielen Stellen chinesische Schriftzeichen....
Vermutlich?
Delphi sollte dir genau sagen, daß es dort ein Problem gibt. (es müßte eine Compiler-Warnung vorhanden sein)
Ups... Der Text ist erst nach dem Quoten da.. Cool... Fehler in der DP?!

Warnings... ja noch 17900! Ich denke ich gebe es mal auf....

Mavarik
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:41
17.900????

Ach herrje.. Alles von der Unicode-Umstellung? Jeden Tag 1000, dann biste in knapp drei Wochen durch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:46
War ich wohl schneller mit Editieren, als du mit dem Lesen

Joar, bei uns in der Software gibt es auch noch gefühlte 2 Milliarden Warnungen, angefangen von nichtinitialisierten Variablen und Results, bis hin zu ein paar dieser Unicodewarnungen (bin auch schon fleißig am entfernen ... im FinalBuilder muß man manchmal ganz schön suchen, bis man den Fehler zwischen den unzähligen Warungen und Hinweisen findet ... das nervt etwas )
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.160 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:47
17.900????

Ach herrje.. Alles von der Unicode-Umstellung? Jeden Tag 1000, dann biste in knapp drei Wochen durch
Das Problem ist die Verschachtelung...

Das beseitigen einer Warnung zieht eine "Rattenschwanz" von Änderungen von Proc zu Proc nach sich...

Ach ja 64Bit kann ich überhaupt nicht compilieren... Da hagelt es nur Interne-Fehlermeldungen vom Compiler... Aber das ist eine andere Geschichte... *heul* 4 Wochen Arbeit... Ergebinss: Besser lassen!

Delphi 6 ist doch sehr schön...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:49
Delphi 6 ist doch sehr schön...
Deswegen gibt es ja auch, beim Kauf von XE/XE2, ein D2007 gratis dazu
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.160 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:54
@himitsu also das doppelte casten funktioniert...

Obgleich ich den Sinn nicht verstehe... Bzw. warum es dann funktioniert!

Vielleicht sollte ich nochmal den original Source nehmen und nicht alle Strings nach AnsiString konvertieren...

Das Problem ist, unsere Software geht davon aus, dass GLOBAL {$H-} gesetzt ist... Da es das ja nicht mehr gibt, habe ich innerhalb von {$H-} Blöcken aus jedem String einen Shortstring gemacht und außerhalb halt zu AnsiString.

Char's hab ich per Hand konvertiert weil zu viele VCL-Override proceduren von eine automatischen Char-AnsiChar Konvertierung betroffen waren.

War vielleicht der falsche Ansatz...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.229 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 15:02
@himitsu also das doppelte casten funktioniert...

Obgleich ich den Sinn nicht verstehe... Bzw. warum es dann funktioniert!
Ist ja auch nicht wirklich ein "einfaches" Casten. Hier springt etwas die Compilermagic an und erzeugt kurzfristig einen richtigen (Unicode)String den du dann als PChar verwenden kannst.

Vielleicht sollte ich nochmal den original Source nehmen und nicht alle Strings nach AnsiString konvertieren...
Wäre vieleicht gut.

Das Problem ist, unsere Software geht davon aus, dass GLOBAL {$H-} gesetzt ist...
Autsch. Dann liegen dein Problem eher daran das man bei der 16->32-Portierung sich Zeit sparen wollte... Na ja. Irgendwann rächt sich sowas.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.160 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 15:09
Autsch. Dann liegen dein Problem eher daran das man bei der 16->32-Portierung sich Zeit sparen wollte... Na ja. Irgendwann rächt sich sowas.
Nein ich denke das liegt an der 8 Bit-> 32 Bit Portierung!

Der Sourceode kommt in vielen Teilen noch von Turbo-Pascal!

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.229 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: VCL Unicode, AnsiString übergeben!

  Alt 19. Okt 2011, 14:49
17.900????

Ach herrje.. Alles von der Unicode-Umstellung? Jeden Tag 1000, dann biste in knapp drei Wochen durch
Erst mal die Warnungen bezüglich String->AnsiString abschalten und dann auf die relevanten konzentrieren.
Den Datenverlust String->AnsiString haben viel bis D2009 mehr oder minder schon immer gehabt solange man auf NT-Systemen gearbeitet hat.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz