Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - E2010 Inkompatible Typen: 'string' und 'PAnsiChar'
Lsm09 - Sa 08.01.11 21:26
Titel: E2010 Inkompatible Typen: 'string' und 'PAnsiChar'
Hallo,
ich habe folgendes Problem:
Wenn ich folgendes eingebe
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var s: string; begin S:= '/C net send 192.168.178.10 ' + edn.text; if Radiobutton1.Checked = true then
ShellExecute(Application.Handle, 'open', 'cmd', S, nil, SW_HIDE); end; |
kommt heraus:
E2010 Inkompatible Typen: 'string' und 'PAnsiChar'
Wie behebe ich das?
Lsm09
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am So 09.01.2011 um 00:14
jaenicke - Sa 08.01.11 21:28
Lsm09 - So 09.01.11 13:37
??
Delete - So 09.01.11 13:42
Du musst S nach PChar casten.
elundril - So 09.01.11 13:48
Ok, mal die Erklärbär-Version:
Du hast S als String vorliegen. Das ist in Delphi ein eigener Datentyp, der nach bestimmten Spezifikationen aufgebaut ist. Blöderweise ist aber ShellExecute keine Funktion die Delphi mitbringt, sondern eine die von der WinAPI kommt, also vom Betriebssystem. Und diese Routine will keinen String übergeben haben sondern einen Pointer auf eine Zeichenkette, genannt PChar. Damit wir jetzt einen String umwandeln können, schreiben wir einfach PChar und dahinter in klammer das unseren Variablennamen bzw unseren String selbst. Dadurch bekommt ShellExecute nicht mehr den String sondern einen PChar, weil wir den String ja zuerst umgewandelt haben.
Also schreibst zu einfach in ShellExecute statt dem S ein PChar(S) hin und alles ist gut.
lg elundril
Lsm09 - So 09.01.11 14:20
DANKE!!!
hat mir sehr geholfen!!
Programm läuft!
Lsm09
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!