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

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

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

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

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

Сообщение xxZaharxx »

Мне надо заменить часть переменной другой переменной. Подскажите, как это сделать.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

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

Сообщение xxZaharxx »

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

Ну вот, есть строчка:

Код: Выделить всё

AProcess.CommandLine := 'cmdow /RUN /HID mpg123-static.exe

Параметр, который идёт после mpg123-static.exe, записан в переменной. Что мне написать, чтобы параметр считывался с переменной?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

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

AProcess.CommandLine := 'cmdow /RUN /HID mpg123-static.exe ' + MyVariable (которая String)
xxZaharxx
незнакомец
Сообщения: 7
Зарегистрирован: 12.06.2011 15:54:00

Сообщение xxZaharxx »

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;


Что делать?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

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

Код: Выделить всё

ShowMessage(MyFile);

2) Если этот путь содержит пробелы, нужно брать параметр в двойные кавычки. Даже если путь не содержит пробелов, двойные кавычки не повредят.

Код: Выделить всё

'mpg123-static.exe "' + MyFile + '"';
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

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

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

Здесь используется глобальная переменная, которая, скорее всего еще не получила значения.
Почитайте сначала литературу про видимость переменных! ;)
Ответить