Страница 1 из 1

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

СообщениеДобавлено: 12.06.2011 18:31:44
xxZaharxx
Мне надо заменить часть переменной другой переменной. Подскажите, как это сделать.

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

СообщениеДобавлено: 12.06.2011 18:45:06
Ism
Ниче не понятно, какая переменная ? На что заменить ?

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

СообщениеДобавлено: 12.06.2011 18:48:01
xxZaharxx
Ism писал(а):Ниче не понятно, какая переменная ? На что заменить ?

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

Параметр, который идёт после mpg123-static.exe, записан в переменной. Что мне написать, чтобы параметр считывался с переменной?

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

СообщениеДобавлено: 12.06.2011 18:51:38
Ism
Это же сверхэлементарно

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

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

СообщениеДобавлено: 13.06.2011 12:55:08
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;


Что делать?

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

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

2) Если этот путь содержит пробелы, нужно брать параметр в двойные кавычки. Даже если путь не содержит пробелов, двойные кавычки не повредят.
Код: Выделить всё
'mpg123-static.exe "' + MyFile + '"';

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

СообщениеДобавлено: 13.06.2011 15:53:36
VirtUX
xxZaharxx писал(а):procedure TForm1.Button1Click(Sender: TObject);
var
MyFile: string;

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

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