AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Funktion für leftstr / rightstr etc mit WideStrings
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion für leftstr / rightstr etc mit WideStrings

Ein Thema von myicq · begonnen am 7. Mai 2021 · letzter Beitrag vom 9. Mai 2021
Antwort Antwort
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Funktion für leftstr / rightstr etc mit WideStrings

  Alt 8. Mai 2021, 09:18
Ich weiß nicht ob der Code dort noch in Ordnung ist, aber damit hatte ich unter Delphi 6 mit Unicode gearbeitet (neben Win-Api und Zeigerspuk). Wolbrink hat den Code irgendwann verkauft, aber das ist noch die alte Freeware-Version.
https://github.com/rofl0r/TntUnicode
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Funktion für leftstr / rightstr etc mit WideStrings

  Alt 8. Mai 2021, 09:41
Sein Edit heißt tntedt1.
Ich gehe schwer davon aus das er die TNTs schon im Einsatz hat.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Funktion für leftstr / rightstr etc mit WideStrings

  Alt 8. Mai 2021, 10:39
Aber das Copy im D6 sollte doch ebenfalls den WideString behandeln? (kann's grad nicht nachsehn, aber bin mir eigentlich ganz sicher)

Delphi-Quellcode:
b := LeftStrW(a, 2);

// wird zu
b := Copy(a, 1, 2);
Intern geht das LeftStr/LeftStrW doch bestimmt eh zum Copy und macht es genauso.


PS: Bei String/AnsiString mit UTF-8 oder einer chinesischen Codepage drin,
da müsste man z.B. mit MSDN-Library durchsuchenCharNextA oder besser MSDN-Library durchsuchenCharNextExA arbeiten, da ein "Zeichen" mehrere Byte/AnsiChar belegen kann.
Also mehrmals (2) aufrufen und weiterzählen, um die Anzahl für's Copy zu bestimmen, oder man benutzt stattdessen vielleicht MSDN-Library durchsuchenLStrCpyNA.




Nja, selber z.B. mit CreateWindowW('EDIT', ...) rumzuspielen, das Edit dann manuell zu behandeln und womöglich auch noch die MessageBehandlung vom Delphi umzubiegen, da vor D2009 bloß ANSI behandelt wurde ... da ist es mit sowas wie den TNT Unicode Controls bestimmt einfacher.
Edit ist noch leicht. Bei ComboBox, ListBox, TreeView und Co. geht der Spaß in der WinAPI (Hier im Forum suchenNonVCL) erst richtig los.

Und andere Lösungen wie https://www.embarcadero.com/de/products/delphi/starter kennt der TE besimmt auch schon?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Mai 2021 um 11:45 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Funktion für leftstr / rightstr etc mit WideStrings

  Alt 9. Mai 2021, 12:10
Noch eine generelle Warnung: Es gibt in Delphi (wie auch den meisten anderen Sprachen) ohnehin keine Methode, mit der man eine bestimmte Anzahl an Zeichen kopieren kann. Copy, LeftStr, RightStr etc. kopieren eine bestimmte Anzahl an Codeeinheiten, im Falle von Wide- bzw. UnicodeString UTF-16(LE)-Codeeinheiten. Auch die Angabe der Startposition bei Copy (und dessen langsameren Äquivalent MidStr) sind Codeeinheiten. Bei bestimmten Ideogrammen, Emojis usw. ist das unintuitiv. Das von dir gepostete Beispiel enthält aber keine Zeichen, die aus mehrere Codeeinheiten bestehen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Funktion für leftstr / rightstr etc mit WideStrings

  Alt 9. Mai 2021, 12:28
Joar, da gibt es zwei Dinge

Einmal die Surrogates im UTF-16, das ist leicht zuerkennen,
also wenn #$D800..#$DBFF, dann gehört das nächste Char dazu.

Und dann die beliebten Combining-Chars, also mehrere Zeichen werden als ein Zeichen angezeigt.
z.B. kann man auch A¨ schreiben und sieht dann ein Ä.

Für diese Beiden gibt es im Windows Funktionen, die ich oben bereits genannt hatte.
Bei uns sieht man es fast nie, aber Richtung Asien und Co. ...

Noch mehr Spaß hat man bei den Smilieys, denn eigentlich bestehen bestanden die nur aus einem Char, aber jemand kam auf die Idee, dass Gendern saugeil wäre,
also kann man nun durch Zusatzzeichen noch Geschlecht und Hautfarbe von vielen Smilieys ändern. (ich glaub war 2018/2019)
(das Chinesengelb Simpsonsgelb gefiel einem nördlichen Ami wohl nicht )
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Mai 2021 um 12:37 Uhr)
  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 07:48 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