Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String in Char.... (https://www.delphipraxis.net/86358-string-char.html)

delphinia 13. Feb 2007 01:14


String in Char....
 
Mein Code:

Delphi-Quellcode:

type
  TInfo = packed record
    lvfi: TLVFindInfo;
Name : array [0..120] of char;
  end;

var
s:String;

Delphi-Quellcode:
info.Name := 'Desktop';

Das geht ohne Probleme aber NICHT
Delphi-Quellcode:
info.Name := s;
dann bekomme ich Meldung

Inkompatible Typen: 'Array' und 'String'


Hat jemand eine Lösung?!

Hansa 13. Feb 2007 02:07

Re: String in Char....
 
Wertzuweisungen müssen im konkrten Fall an die Array-Elemente gemacht werden und nicht an das Array an sich. Die Elemente sind aber strings. Und ein Array ist eben ein Array. :mrgreen:

Delphi-Quellcode:
// das geht beides :
info.Name [1] := 'Desktop';
info.Name [120] := s;

// so was aber nicht mehr :
info.Name [121] := 'Desktop';
P.S.: die Elemente sind ja gar keine Strings, sondern nur Char. :shock: Tja ein String ist eine art Array of char. :corky:

delphinia 13. Feb 2007 02:14

Re: String in Char....
 
Sorry! Aber

a) verstehe ich nicht genau was Du mir sagen möchtest und b) funktioniert auch

Delphi-Quellcode:
info.Name[120] := s;
nicht...
[Fehler] form3.pas(237): Inkompatible Typen: 'Char' und 'String'

Hansa 13. Feb 2007 02:19

Re: String in Char....
 
Da muss sich die Frühschicht drum kümmern. :lol:

Soviel noch als Korrektur und Denkanstoß :

Delphi-Quellcode:
// das geht beides :
info.Name [1] := 'D';
info.Name [120] := s[1];

// so was aber nicht mehr :
info.Name [121] := 'D';

marabu 13. Feb 2007 05:52

Re: String in Char....
 
Guten Morgen,

so geht es:

Delphi-Quellcode:
 StrPCopy(@Info.Name, s);
Grüße vom marabu

Muehle 13. Feb 2007 07:20

Re: String in Char....
 
Delphi unterscheidet zwischen den beiden Typen
PChar/PAnsiChar und String :

Da ein Stringarray mit @ den Typ PAnsiChar (Pointer auf Char) hat,
musst du dafür eben Fkt.n (z.B. StrPCopy) für diesen Typ verwenden.

wie z.B. auch beim Großsetzen von Strings :

Uppercase(Str: String) fkt. nicht, aber
StrUpper(Str: PAnsiChar) funktioniert !!

Chemiker 13. Feb 2007 07:36

Re: String in Char....
 
Hallo,

muss der array als char sein im Record?

Wenn nicht würde ich in als string[120] schreiben.


Delphi-Quellcode:
type
  TInfo = packed record
    lvfi: TLVFindInfo;
    Name: string[120];
  end;
Dann ist auch die
Delphi-Quellcode:
  info.Name:= s;
kein Problem.

Bis bald Chemiker

delphinia 13. Feb 2007 14:47

Re: String in Char....
 
Zitat:

Zitat von marabu
Guten Morgen,

so geht es:

Delphi-Quellcode:
 StrPCopy(@Info.Name, s);
Grüße vom marabu

Danke das funktioniert super! ;-)


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