![]() |
String zu array of char
Halöle
Hab da ein kleines Problem mit einer Zuweisung.
Delphi-Quellcode:
Ich hab schon etliche Möglichkeiten, die ich im Forum finden konnte, ausprobiert. Unter anderem...
//So geht es ohne Probleme allerdings muss ich die
//IP direkt angeben. //Ncb.ncb_callname = array[0..15] of char; ... begin Ncb.ncb_callname := '192.168.001.001 '; ... //Da aber die IP die ich übergeben will in //einem String hängt der übergeben wird komme //ich einfach net weiter. //------- //Hier wie ich es gerne machen würde aber es leider //net geht. var ip : string begin ip := '192.168.001.001 '; Ncb.ncb_callname := ip;
Delphi-Quellcode:
Dan bekomme ich allerdings die Meldung "Inkompatible Typen" an den kopf geschmissen. Weis eventuel jemand wie man das lösen kann?
var
ip_addr : array[0..15] of char; begin ip_addr[0] := '1'; ip_addr[1] := '9'; ip_addr[2] := '2'; ip_addr[3] := '.'; ip_addr[4] := '1'; ip_addr[5] := '6'; ip_addr[6] := '8'; ip_addr[7] := '.'; ip_addr[8] := '0'; ip_addr[9] := '0'; ip_addr[10] := '1'; ip_addr[11] := '.'; ip_addr[12] := '1'; ip_addr[13] := '2'; ip_addr[14] := '3'; ip_addr[15] := ' '; Ncb.ncb_callname := ip_addr; MFG Michieru |
Re: String zu array of char
Erstmal herzlich wilkommen in der DP!
Du musst explizit casten:
Delphi-Quellcode:
(hoffe ich :zwinker:, kann auch sein, dass ich mich grad vertu... probier mal! )
Ncb.ncb_callname := PChar(ip);
gruss, dizzy |
Re: String zu array of char
Hallo dizzy
1.Möglichkeit
Delphi-Quellcode:
Meldung: Ungültige Typumwandlung
var
ip_addr : array[0..15] of char; begin ip_addr[0] := '1'; ip_addr[1] := '9'; ip_addr[2] := '2'; ip_addr[3] := '.'; ip_addr[4] := '1'; ip_addr[5] := '6'; ip_addr[6] := '8'; ip_addr[7] := '.'; ip_addr[8] := '0'; ip_addr[9] := '0'; ip_addr[10] := '1'; ip_addr[11] := '.'; ip_addr[12] := '0'; ip_addr[13] := '0'; ip_addr[14] := '1'; ip_addr[15] := ' '; Ncb.ncb_callname := PChar(ip_addr); 2.Möglichkeit
Delphi-Quellcode:
Meldung: Inkompatible Typen 'Array' und 'PAnsiChar'
var
ip : string; begin ip := '192.168.001.001 '; Ncb.ncb_callname := PChar(ip); Bin auch noch net so begabt in Delphi... net das ihr durch meine ganzen Code-Schnipsel denkt ich sei ein Profi der ein Probleme hat. Vielmehr ein Anfänger der Probleme hat :wink: MFG Michieru |
Re: String zu array of char
Ist ncb.ncb_callname eine von dir erstellte Variable?
Wenn ja, dann mach es so:
Delphi-Quellcode:
Eine andere Variante, die auch gehen könnte:
type TIPArray = array[0..14] of Char; // bei 0..14 sind's ja 15 Elemente, und ne ip-Addy ist 15 Zeichen lang
. . . var ncb_callname: TIPArray; ip : TIPArray; . . . // Dann geht auch: ncb_callname := ip;
Delphi-Quellcode:
Für Delphi ist ein "array[0..x] of Char" nicht gleich einem anderen "array[0..x] of Char".
var
ncb_callname: string[15]; // 15-Zeichen langer String - ein String ist nicht anderes als ein array of Char! ip : string[15]; . . . // Dann sollte auch gehen: ncb_callname := ip; Wenn du aber einen eigenen Typ (TIPArray) deklarierst, DANN sind alle Variablen dieses Typs untereinander "zuweisungskompatibel". Vergiss den Murks in meiner ersten Antwort ;), hoffe dass das hilft! Aber man müsste jetzt wissen, was das Objekt "ncb" eigentlich ist, und wie die Eigenschaft "ncb_callname" deklariert ist. n8i, dizzy |
Re: String zu array of char
Nimm die Windows API Funktion lstrcpy:
Delphi-Quellcode:
Aber wichtig: Der Buffer muss um eins größer sein.
procedure TForm1.Button1Click(Sender: TObject);
var s: String; buffer: array [0..3] of Char; begin s := 'abc'; lstrcpy(buffer, PChar(s)); ShowMessage(String(buffer)); end; |
Re: String zu array of char
halöle
@dizzy Öhm ne die Variable "NCB" ist vom Typ "PNCB" aus der Unit NB30.pas von Delphi. Da kann ich die leider net neu zuweisen. @Luckie Thx das hat funktioniert. :-D Da die ip am schluss eine Leerstelle hat habe ich auch meinen 1 Buffer mehr. :thuimb: Lösung:
Delphi-Quellcode:
THX an euch beiden.
...
//NCB.ncb_callname : array[0..15] of Char; von NB30.pas aus Delphi var ip : String; begin ip := '192.168.001.001'; lstrcpy(Ncb.ncb_callname, PChar(ip)); ... MFG Michieru |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz