AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String zu array of char

Ein Thema von MichieruShiro · begonnen am 16. Mär 2004 · letzter Beitrag vom 16. Mär 2004
Antwort Antwort
MichieruShiro

Registriert seit: 15. Mär 2004
3 Beiträge
 
#1

String zu array of char

  Alt 16. Mär 2004, 00:21
Halöle

Hab da ein kleines Problem mit einer Zuweisung.

Delphi-Quellcode:
//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;
Ich hab schon etliche Möglichkeiten, die ich im Forum finden konnte, ausprobiert. Unter anderem...

Delphi-Quellcode:
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;
Dan bekomme ich allerdings die Meldung "Inkompatible Typen" an den kopf geschmissen. Weis eventuel jemand wie man das lösen kann?

MFG
Michieru
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: String zu array of char

  Alt 16. Mär 2004, 00:35
Erstmal herzlich wilkommen in der DP!

Du musst explizit casten:
Ncb.ncb_callname := PChar(ip); (hoffe ich , kann auch sein, dass ich mich grad vertu... probier mal! )


gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
MichieruShiro

Registriert seit: 15. Mär 2004
3 Beiträge
 
#3

Re: String zu array of char

  Alt 16. Mär 2004, 00:55
Hallo dizzy

1.Möglichkeit
Delphi-Quellcode:
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);
Meldung: Ungültige Typumwandlung

2.Möglichkeit
Delphi-Quellcode:
var
  ip : string;
begin
  ip := '192.168.001.001 ';
  Ncb.ncb_callname := PChar(ip);
Meldung: Inkompatible Typen 'Array' und 'PAnsiChar'

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

MFG
Michieru
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: String zu array of char

  Alt 16. Mär 2004, 01:32
Ist ncb.ncb_callname eine von dir erstellte Variable?

Wenn ja, dann mach es so:
Delphi-Quellcode:
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;
Eine andere Variante, die auch gehen könnte:
Delphi-Quellcode:
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;
Für Delphi ist ein "array[0..x] of Char" nicht gleich einem anderen "array[0..x] of Char".
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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: String zu array of char

  Alt 16. Mär 2004, 01:43
Nimm die Windows API Funktion lstrcpy:
Delphi-Quellcode:
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;
Aber wichtig: Der Buffer muss um eins größer sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MichieruShiro

Registriert seit: 15. Mär 2004
3 Beiträge
 
#6

Re: String zu array of char

  Alt 16. Mär 2004, 07:02
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.
Da die ip am schluss eine Leerstelle hat habe ich auch meinen 1 Buffer mehr.

Lösung:
Delphi-Quellcode:
...
//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));
...
THX an euch beiden.

MFG
Michieru
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 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