Замена части переменной другой переменной

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Замена части переменной другой переменной

Сообщение xxZaharxx » 12.06.2011 18:31:44

Мне надо заменить часть переменной другой переменной. Подскажите, как это сделать.
xxZaharxx
незнакомец
 
Сообщения: 7
Зарегистрирован: 12.06.2011 15:54:00

Re: Замена части переменной другой переменной

Сообщение Ism » 12.06.2011 18:45:06

Ниче не понятно, какая переменная ? На что заменить ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Замена части переменной другой переменной

Сообщение xxZaharxx » 12.06.2011 18:48:01

Ism писал(а):Ниче не понятно, какая переменная ? На что заменить ?

Ну вот, есть строчка:
Код: Выделить всё
AProcess.CommandLine := 'cmdow /RUN /HID mpg123-static.exe

Параметр, который идёт после mpg123-static.exe, записан в переменной. Что мне написать, чтобы параметр считывался с переменной?
xxZaharxx
незнакомец
 
Сообщения: 7
Зарегистрирован: 12.06.2011 15:54:00

Re: Замена части переменной другой переменной

Сообщение Ism » 12.06.2011 18:51:38

Это же сверхэлементарно

AProcess.CommandLine := 'cmdow /RUN /HID mpg123-static.exe ' + MyVariable (которая String)
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Замена части переменной другой переменной

Сообщение xxZaharxx » 13.06.2011 12:55:08

Ism писал(а):Это же сверхэлементарно

AProcess.CommandLine := 'cmdow /RUN /HID mpg123-static.exe ' + MyVariable (которая String)


Не получается. Программа тупо не видит параметр, хотя он уже обозначен.
Смотри кусок кода:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile: string;
begin
  if OpenDialog1.Execute then MyFile:=OpenDialog1.FileName;
end;     


Он по идее должен обозначать имя файла (имя файла - параметр программы) как переменную MyFile. После выбора файла в форме и открытия, я запускаю, но программа включается БЕЗ ПАРАМЕТРА!

Кусок кода запуска программы:

Код: Выделить всё
procedure TForm1.Button3Click(Sender: TObject);
var
    AProcess: TProcess;
begin
   AProcess := TProcess.Create(nil);
   AProcess.CommandLine := 'mpg123-static.exe ' + MyFile;
   AProcess.Options := AProcess.Options + [poWaitOnExit];
   AProcess.Execute;
   AProcess.Free;


Что делать?
xxZaharxx
незнакомец
 
Сообщения: 7
Зарегистрирован: 12.06.2011 15:54:00

Re: Замена части переменной другой переменной

Сообщение Odyssey » 13.06.2011 13:12:04

Нужно проверить две вещи:
1) Что в MyFile записывается имя файла с полным путём. Проверить можно через
Код: Выделить всё
ShowMessage(MyFile);

2) Если этот путь содержит пробелы, нужно брать параметр в двойные кавычки. Даже если путь не содержит пробелов, двойные кавычки не повредят.
Код: Выделить всё
'mpg123-static.exe "' + MyFile + '"';
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Замена части переменной другой переменной

Сообщение VirtUX » 13.06.2011 15:53:36

xxZaharxx писал(а):procedure TForm1.Button1Click(Sender: TObject);
var
MyFile: string;

Здесь переменная локальная. После выполнения процедуры переменная исчезнет из памяти.
xxZaharxx писал(а):AProcess.CommandLine := 'mpg123-static.exe ' + MyFile;

Здесь используется глобальная переменная, которая, скорее всего еще не получила значения.
Почитайте сначала литературу про видимость переменных! ;)
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru