Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.03.2011, 06:44
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию Соединить переменные

Здравствуйте.

Есть процедура:

Код:
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  
Старый 05.03.2011, 06:52
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Код:
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;
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #3  
Старый 05.03.2011, 07:00
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Код:
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;


[DCC Error] Unit1.pas(191): E2010 Incompatible types: 'string' and 'PAnsiChar'
Ответить с цитированием
  #4  
Старый 05.03.2011, 08:20
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Ну как дети малые, чесное слово.
Код:
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  
Старый 05.03.2011, 13:44
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Ну как дети малые, чесное слово.
Код:
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;


Выдаёт туже ошибку, что и выше указана. Компилятор - D2009
Ответить с цитированием
  #6  
Старый 05.03.2011, 14:53
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
WinExec (('ping ' + PAnsiChar(c)), SW_SHOW);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 05.03.2011, 15:01
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Код:
WinExec (('ping ' + PAnsiChar(c)), SW_SHOW);


[DCC Warning] Unit1.pas(184): W1044 Suspicious typecast of string to PAnsiChar
[DCC Error] Unit1.pas(184): E2010 Incompatible types: 'string' and 'PAnsiChar'
Ответить с цитированием
  #8  
Старый 05.03.2011, 15:30
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

oops)
Код:
WinExec (PAnsiChar('ping ' + c), SW_SHOW);
WinExec (PChar('ping ' + c), SW_SHOW);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 05.03.2011, 15:39
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
oops)
Код:
WinExec (PAnsiChar('ping ' + c), SW_SHOW);
WinExec (PChar('ping ' + c), SW_SHOW);

Спасибо за проявленный интерес, но немного опишу что нужно.

Есть набор данных, есть таблица с идентификаторами 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  
Старый 05.03.2011, 16:03
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вот прямо сейчас проверил:
Код:
var
  ip: String;
  s: String;
begin
  ip:='127.0.0.1'; // var
  s:='ping '+ip;
  WinExec(PAnsiChar(s), SW_SHOW);
end;
куда еще подробней - не знаю
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #11  
Старый 05.03.2011, 16:14
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
вот прямо сейчас проверил:
Код:
var
  ip: String;
  s: String;
begin
  ip:='127.0.0.1'; // var
  s:='ping '+ip;
  WinExec(PAnsiChar(s), SW_SHOW);
end;
куда еще подробней - не знаю

Изменил на :

Код:
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  
Старый 05.03.2011, 16:18
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

У меня кстати сия процедура не работает:

Код:
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  
Старый 05.03.2011, 16:18
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Попробуй вместо String пользовать AnsiString, ну или вместо PAnsiChar использовать PChar .
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #14  
Старый 05.03.2011, 16:39
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Благодарю всех. Заработало вот так:

Код:
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  
Старый 05.03.2011, 16:41
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Юзай лучше WinExecA. У меня подозрение, что ты пытался передать анси строку функции принимающей строку в юникоде.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025