Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - array of char und string


O'rallY - Mo 16.06.03 17:22
Titel: array of char und string
Ist mir zwar peinlich, aber wie kann man einen string in einen array des Typs char konvertieren?
Das Problem trat im Zusammenhang mit einem TrayIcon auf. Da gibts ja die Variable szTip (array [0..63] of char). Natürlich kann ich ganz leicht schreiben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
szTip := 'text';

//aber sobald eine Varbiable ins Spiel kommt
s: string;
s := 'hallo';
szTip := 'text' + s; //Fehler

Dann habe ich mal probiert jeden Buchstaben einzeln zu übertragen. Misserfolg. Das Array ist anschließend leer:

Delphi-Quelltext
1:
2:
3:
4:
newtip: string = 'irgendeintext';

for i := 0 to Length(newtip) - 1 do
    fIconData.szTip[i] := newtip[i];


ErnestoChe - Mo 16.06.03 17:44

Hi,

also du kanst ein array of Char und einen String verketten und einem anderen String zuweisen, wenn dir das was bringt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  Form1: TForm1;
  szTip: array[0..63of char;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
begin
  szTip := 'Hallo';
  s := ' Welt';
  caption := szTip + s;
end;


MFG

- Ernesto -


O'rallY - Mo 16.06.03 17:51

Ne, das bringt mir leider nix. Ich muss der szTip-Variable eine String zuweisen könne. So schwer kann das doch nicht sein!


Popov - Mo 16.06.03 17:56

Eventuell müßte PChar klappen. Also:


Quelltext
1:
szTip := PChar('text' + s); //Fehler                    


Motzi - Mo 16.06.03 18:29

StrPCopy


Delete - Mo 16.06.03 19:00


Delphi-Quelltext
1:
szTipp := pointer('Test'+s);                    


O'rallY - Mo 16.06.03 22:36

Danke für die Antworten. Werde es sobald ich Zeit habe ausprobieren. Motzis und Luckies Beiträge scheinen mir doch vielversprechend zu sein.
Ubrigens: Wer sich die Mühe machen will, jedes Zeichen einzeln zu übertragen:

Delphi-Quelltext
1:
2:
3:
newtip: string = 'irgendeintext'
for i := 1 to Length(newtip) do 
    fIconData.szTip[i-1] := newtip[i];


hansa - Di 17.06.03 02:03

Was treibt Ihr denn da ? Das geht nur Buchstabe für Buchstabe.


Quelltext
1:
2:
for i := 1 to length (s) do
  wasweißich


Delete - Di 17.06.03 08:10

hansa hat folgendes geschrieben:
Was treibt Ihr denn da ? Das geht nur Buchstabe für Buchstabe.

Erzähl bloß nicht solchen Unsinn! Richtig ist, dass dieser Versuch

Delphi-Quelltext
1:
nid.szTip := pchar('Test' + s);                    

einen Compiler-Fehler verursacht (zumindest bei mir mit D5). Man kann aber, wie Motzi schrieb, mit StrPCopy arbeiten

Delphi-Quelltext
1:
StrPCopy(nid.szTip,'Test' + s);                    

bzw. wenn man ohne die SysUtils-Unit auskommen will/muss, dann geht es auch so:

Delphi-Quelltext
1:
lstrcpy(nid.szTip,pchar('Test' + s));                    


foxy - Di 17.06.03 08:10

guter post :) das porblem habe ich auch gerade und wollte gerade topic eröffnen

ich versuch dann gerade mal die vorschläge