Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeichen im Widestring (https://www.delphipraxis.net/57695-zeichen-im-widestring.html)

bioser 25. Nov 2005 10:25


Zeichen im Widestring
 
Hallo, weiß jemand, wie man auf die einzelnen Zeichen in einem widestring zugreifen kann ?


Gruss
bioser

xaromz 25. Nov 2005 10:28

Re: Zeichen im Widestring
 
Hallo,

genauso wie auf ein Zeichen in einem AnsiString:
Delphi-Quellcode:
var
  Str: WideString
  Zeichen: WideChar;
...
Zeichen := Str[5]; // Gibt fünftes Zeichen zurück
Gruß
xaromz

bioser 25. Nov 2005 13:07

Re: Zeichen im Widestring
 
Hallo,

bei der TNTStringList gibt's ne Zugriffsverletzung !

Delphi-Quellcode:
var sl:TTNTStringList;
    ws:widestring;

sl := TTNTStringList.Create;
sl.LoadFromFile('c:\test.txt');


for i:=0 to sl.Count-1 do
begin

 ws := sl.Strings[i];
 if ws[1] = '' then ShowMessage('S');

end;
Komisch...

Gruss
bioser

AndreasP 25. Nov 2005 13:20

Re: Zeichen im Widestring
 
mahlzeit,

natürlich führt
Delphi-Quellcode:
if ws[1] = '' then ShowMessage('S');
zu einer zugriffsverletzung. wenn ws leer ist (ws = '') kannst du auch nicht auf ws[1] zugreigen. deinen code würde ich wenn dann ändern zu:
Delphi-Quellcode:
if Length(ws) > 0 then
   ShowMessage('S');
in den TntUtils gibt es ein wide-version zu length.

himitsu 25. Nov 2005 13:25

Re: Zeichen im Widestring
 
Wenn der String leer ist, dann ist diesem kein Speicher zugewiesen, wodurch natürlich kein Zugrif auf das 1. Zeichen möglich ist.

Delphi-Quellcode:
if (ws <> '') and (ws[1] = '*') then


Zitat:

Delphi-Quellcode:
if ws[1] = '' then

außerdem kann ein Char nie leer sein ... ws[1] <> '' (dieses trifft immer zu)



Was willst du überhaupt testen?


@AndreasP: Delphi hat selber auch schon ein Length für die WideStrings drin ;)

bioser 25. Nov 2005 13:30

Re: Zeichen im Widestring
 
alles klar, danke, jetzt klappt's !


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