Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Incompatible types beim Zusammensetzen von WideChars (https://www.delphipraxis.net/191680-incompatible-types-beim-zusammensetzen-von-widechars.html)

kwhk 10. Feb 2017 16:27

AW: Incompatible types beim Zusammensetzen von WideChars
 
So geht es mit Delphi 7, man muss die einzelnen Zeichen zunächst einer WideString-Variablen zuweisen, danach kann man sie verbinden.
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
   s1, s2: WideString;
   s21, s22 : WideString;
   s : String;
begin
   s1  := 'abc';
   s21 := s1[1];
   s22 := s1[2];
   s2  := s21 + s22;

   WriteLn('s1=',s1);
   WriteLn('s1[1]=',s1[1]);
   WriteLn('s1[2]=',s1[2]);
   WriteLn('s21=',s21);
   WriteLn('s22=',s22);
   WriteLn('s2=',s2);

   ReadLn(s);
end.
Hier das Ergebnis
Code:
s1=abc
s1[1]=a
s1[2]=b
s21=a
s22=b
s2=ab

t.roller 10. Feb 2017 17:37

AW: Incompatible types beim Zusammensetzen von WideChars
 
Zitat:

Zitat von kwhk (Beitrag 1361288)
So geht es mit Delphi 7, man muss die einzelnen Zeichen zunächst einer WideString-Variablen zuweisen, danach kann man sie verbinden.

Bei einem WideString hat S[i] den Typ WideChar.
Delphi-Quellcode:
s21, s22 : WideChar;

kwhk 11. Feb 2017 07:50

AW: Incompatible types beim Zusammensetzen von WideChars
 
Ich habe noch etwas gespielt, ich denke s21 und s22 sind schon WideString, keine WideChar.
Wenn ich die beiden WideChar s1[1] und s1[2] nacheinander s3 zuweise ( statt s3 := s1[1]+s1[2] ), dann klappt das auch - siehe s3.
Bei s4 funktioniert es auch. Wenn man WideChar mit + verknüpft, dann muss offenbar mindestens ein WideString in der + - Kette dabei sein, es funktioniert auch ein Leerstring, wie in dem Beispiel.


Hier der Code
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
   SysUtils;

var
    s1, s2, s3, s4: WideString;
    s21, s22 : WideString;
    s : String;
begin
    s21 := '<<<';
    s22 := '>>>';
    s1 := 'abc';
    s21 := s21+s1[1];
    s22 := s1[2]+s22;
    s2 := s21 + s22;

    s3 := s1[1]; // statt s3 := s1[1]+s1[2]
    s3 := s3+s1[2];

    s4 := '';
    s4 := s4+s1[1]+s1[2]; // statt s4 := s1[1]+s1[2]

    WriteLn('s1=',s1);
    WriteLn('s1[1]=',s1[1]);
    WriteLn('s1[2]=',s1[2]);
    WriteLn('s21=',s21);
    WriteLn('s22=',s22);
    WriteLn('s2=',s2);
    WriteLn('s3=',s3);
    WriteLn('s4=',s4);

    ReadLn(s);
end.
und hier das Ergebnis
Code:
s1=abc
s1[1]=a
s1[2]=b
s21=<<<a
s22=b>>>
s2=<<<ab>>>
s3=ab
s4=ab


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr.
Seite 2 von 2     12   

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