![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте.
Есть процедура: Код:
procedure Tfm_main.N13Click(Sender: TObject);
var a: string;
b: string;
c: string;
begin
a:=fm_main.MyQ.FieldByName('remote_switch_id').AsString;
b:='10.100.10.';
c:= b+a;
showmessage(c);
WinExec (('ping ' + 'c'), SW_SHOW);
//WinExec (('ping ' + '10.100.10.15'), SW_SHOW);
end;showmessage возвращает - 10.100.10.15 Как заставить работать команду пинг с переменной c Спасибо. |
|
#2
|
||||
|
||||
|
Код:
procedure Tfm_main.N13Click(Sender: TObject);
var
a: string;
begin
a := fm_main.MyQ.FieldByName('remote_switch_id').AsString;
WinExec (('ping 10.100.10.' + a), SW_SHOW);
end; |
|
#3
|
|||
|
|||
|
Цитата:
[DCC Error] Unit1.pas(191): E2010 Incompatible types: 'string' and 'PAnsiChar' |
|
#4
|
||||
|
||||
|
Ну как дети малые, чесное слово.
Код:
procedure Tfm_main.N13Click(Sender: TObject);
var a: string;
b: string;
c: string;
begin
a:=fm_main.MyQ.FieldByName('remote_switch_id').AsString;
b:='10.100.10.';
c:= b+a;
showmessage(c);
WinExec (('ping ' + PChar(c)), SW_SHOW);
//WinExec (('ping ' + '10.100.10.15'), SW_SHOW);
end; |
|
#5
|
|||
|
|||
|
Цитата:
Выдаёт туже ошибку, что и выше указана. Компилятор - D2009 |
|
#6
|
||||
|
||||
|
Код:
WinExec (('ping ' + PAnsiChar(c)), SW_SHOW); |
|
#7
|
|||
|
|||
|
Цитата:
[DCC Warning] Unit1.pas(184): W1044 Suspicious typecast of string to PAnsiChar [DCC Error] Unit1.pas(184): E2010 Incompatible types: 'string' and 'PAnsiChar' |
|
#8
|
||||
|
||||
|
oops)
Код:
WinExec (PAnsiChar('ping ' + c), SW_SHOW);
WinExec (PChar('ping ' + c), SW_SHOW); |
|
#9
|
|||
|
|||
|
Цитата:
Спасибо за проявленный интерес, но немного опишу что нужно. Есть набор данных, есть таблица с идентификаторами 1,2,3...254 (id оборудования) id соотвествует ip адресу 10.100.10.1, 10.100.10.102, 10.100.10.3...10.100.10.254. Хотелось бы вставая на определённую строку вызывать команду пинг передавая в неё параметры. С этим WinExec (PAnsiChar('ping ' + c), SW_SHOW); - вообще ничего не происходит С этим WinExec (PChar('ping ' + c), SW_SHOW); ошибка -- [DCC Error] Unit1.pas(195): E2010 Incompatible types: 'Char' and 'AnsiChar' Последний раз редактировалось gebs, 05.03.2011 в 15:48. |
|
#10
|
||||
|
||||
|
вот прямо сейчас проверил:
Код:
var ip: String; s: String; begin ip:='127.0.0.1'; // var s:='ping '+ip; WinExec(PAnsiChar(s), SW_SHOW); end; |
|
#11
|
|||
|
|||
|
Цитата:
Изменил на : Код:
procedure Tfm_main.N13Click(Sender: TObject);
var
ip: String;
s: String;
begin
ip:=fm_main.MyQ.FieldByName('remote_switch_id').AsString;; // var
s:='ping '+' 10.100.10.' +ip;
showmessage(s);
WinExec(PAnsiChar(s), SW_SHOW);
end;Мессага нормальная, а дальше командная строка не запуская, просто тишина. |
|
#12
|
|||
|
|||
|
У меня кстати сия процедура не работает:
Код:
var ip: String; s: String; begin ip:='127.0.0.1'; // var s:='ping '+ip; WinExec(PAnsiChar(s), SW_SHOW); end; [DCC Warning] Unit1.pas(193): W1044 Suspicious typecast of string to PAnsiChar Delphi 2009 |
|
#13
|
||||
|
||||
|
Попробуй вместо String пользовать AnsiString, ну или вместо PAnsiChar использовать PChar .
|
|
#14
|
|||
|
|||
|
Благодарю всех. Заработало вот так:
Код:
procedure Tfm_main.N13Click(Sender: TObject);
var
ip: String;
s: String;
begin
ip:=fm_main.MyQ.FieldByName('remote_switch_id').AsString; // var
s:='ping '+' 10.100.10.' +ip;
//showmessage(s);
WinExec(PAnsiChar( AnsiString(s)), SW_SHOW);
end;Видимо это связанос моим незнанием и с d2009 |
|
#15
|
||||
|
||||
|
Юзай лучше WinExecA. У меня подозрение, что ты пытался передать анси строку функции принимающей строку в юникоде.
|