AGB  ·  Datenschutz  ·  Impressum  







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

WideChar aus WideString bekommen.

Ein Thema von snow · begonnen am 11. Jan 2008 · letzter Beitrag vom 11. Jan 2008
Antwort Antwort
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#1

WideChar aus WideString bekommen.

  Alt 11. Jan 2008, 14:41
Hallo

wenn ich einen Widestring habe, und den WideChar an einer Position des strings auslesen möchte komm ich mit

String[X] nur bei Ansi-zeichen weiter nicht aber bei Unicode.

Wie kann ich sonst nen WideChar aus nem Widestring bekommen?

Gruß snow
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: WideChar aus WideString bekommen.

  Alt 11. Jan 2008, 14:45
Genauso (sind beides dynamische Arrays, also gleicher Zugriff)

Delphi-Quellcode:
Var S: WideString;
  C: WideChar;

C := S[x];
wie machst du es denn bisher? (etwas Code)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#3

Re: WideChar aus WideString bekommen.

  Alt 11. Jan 2008, 14:51
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var chr1, chr2 : widechar;
str : widestring;
nr : integer;
begin
chr1:=Widechar(256);
chr2:=Widechar(257);
str:=chr1+chr2;
chr1:=str[1];
nr:=ord(chr1);
showmessage(inttostr(nr));
end;
so.

ich weise zuerst den widechars chr1, chr2 das zeichen 256 und 267 zu.

dann klemm ich die beiden in den string und lese dann die erste stelle wieder in Chr1

dann wird mittels ord der integer herausgefunden und dann das ganze angezeigt.

eigendlich sollte ich ja 256 angezeigt bekommen. aber ich bekomm 65 angezeigt.

wenn ich aber
str:=chr1+chr2; durch
str:=chr1; ersetze dann klapts und ich bekomm 256 raus.

gruß snow

edit:// ich hab den fehler gefunden aber es ist wohl eher ein Bugg.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var chr1, chr2 : widechar;
str, str2 : widestring;
nr : integer;
begin
chr1:=Widechar(256);
chr2:=Widechar(257);
str:=chr1;
str2:=chr2;
str:=str+str2;
chr1:=str[2];
nr:=ord(chr1);
showmessage(inttostr(nr));
end;
zuerst die widechars in widestrings umwandeln dann addieren und dann wieder auslesen.

merkwürdig und vor allem viel Tipp arbeit.

Ich werd wohl ne procedure schreiben müssen.

Gruß snow
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: WideChar aus WideString bekommen.

  Alt 11. Jan 2008, 15:19
nja, mit Unicode hat Delphi halt noch so seine Probleme

du kannst aber selber direkt eine widechar<>widestring-Konvertierung vornehmen,
str := WideString(chr1) + WideString(chr2);
wobei es meißt recht, wenn du, sobald der erste Wert ein Char/WideChar ist und du es einem String uweisen willst, nur den ersten Wert umwandelst, der Rest geht meist dann von Selber, da dann Delphi schon weiß, daß es ein String ist und es zusammenfügen/anhängen und nicht zusammenrechnen soll.

str := WideString(chr1) + {irgendwas und mehr};
wie es der Compiler womöglich verstehen kann:
Delphi-Quellcode:
// der Code, also das was du denkst zu wollen
str := chr1 + chr2;

// jetzt kann addiert
str := String(Char(summe(chr1, chr2)));
str := String(Char(Word(chr1) + word(chr2)));

// oder zusammengesetzt werden
// ... jenachdem wie der Compiler es interpretiert
str := String(chr1) + string(chr2);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#5

Re: WideChar aus WideString bekommen.

  Alt 11. Jan 2008, 15:43
ich hab mir jetz folgende functionen geschrieben.

Delphi-Quellcode:
function WChrtoWstr(WChar : Widechar):WideString;
begin
Result:=Wchar;
end;

//------------------------------------------------------------------------------

function WordtoWstr(W : Word):Widestring;
begin
Result:=WChrtoWstr(WideChar(W));
end;
gruß snow
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: WideChar aus WideString bekommen.

  Alt 11. Jan 2008, 16:02
WChrToWstr ist ja eine Funktion und diese wird aufgerufen (nette sprünge im Programm), wärend WideString(...) direkt im Code umgewandelt,
aber aus Verständniskompatibilität zu WordToWstr wirst du dieses vermutlich als Funktion belassen.

bei WordToWstr kannst du aber zumindestens den "unnötigen" Aufruf von WChrToWstr weglassen
Delphi-Quellcode:
function WordtoWstr(W : Word):Widestring;
begin
  Result:=WideChar(W);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#7

Re: WideChar aus WideString bekommen.

  Alt 11. Jan 2008, 16:36
Stimmt der ist unnötig.

Gruß snow
  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:01 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