すみません、c:\ 専用で作っていたプログラムをF:\でも使えるようにするためにDRVという変数を使うことにしました。
Winexec( DRV+':\AAAAA\BBB.exe', SW_SHOW);
としたら、エラーが出るので下のようにしたら、エラーは出なくなりましたが、
BBB.exeを立ち上がらせることができなくなりました。
手動で立ち上がらせるとさせたい仕事をするのですが。
どうしたらいいのでしょうか。
よろしくお願いします。
procedure TForm1.FormCreate(Sender: TObject);
begin
DrtPath :=ExtractFilePath(Application.ExeName);
Drv :=copy(DrtPath,1,1);
end;
procedure TForm1.button1Click(Sender: TObject);
begin
Winexec( PAnsiChar(DRV+':\AAAAA\BBB.exe'), SW_SHOW);
end;
> BBB.exeを立ち上がらせることができなくなりました。
このとき、winexec の 戻り値は、何が返ってきていますか?
procedure TForm2.XXXX(P: PAnsiChar);
begin
Memo1.Lines.Add(StrPas(P));
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
DRV1 := 'A'; //String
DRV2 := 'B'; //AnsiString
TEXT1 := 'CCCCC'; //String
TEXT2 := 'DDDDD'; //AnsiString
XXXX (PAnsiChar(DRV1 + 'XXXXX')); //String + 'AAAAA' A
XXXX (PAnsiChar(DRV2 + 'YYYYY')); //AnsiString + 'BBBBB' BYYYYY
XXXX (PAnsiChar(DRV1 + TEXT1)); //String + String A
XXXX (PAnsiChar(DRV2 + TEXT1)); //AnsiString + String B
XXXX (PAnsiChar(DRV1 + TEXT2)); //String + AnsiString A
XXXX (PAnsiChar(DRV2 + TEXT2)); //AnsiString + AnsiString BDDDDD
XXXX (PAnsiChar(TEXT1)); //String C
XXXX (PAnsiChar(TEXT2)); //AnsiString DDDDDD
XXXX (PAnsiChar('ZZZZZ')) ; //'ZZZZZ' ZZZZZZ
end;
PWideChar で Stirng型(UnicodeString) を囲んじゃダメだね
PWideChar(AnsiString(DRV) + 'AAAAAAA'
にするか
DRV を AnsiString 型にするか
どちらか
igyさん、ありがとうございます。
下のでいいのでしょうか?
A=2
です。
A:=Winexec(PANsiChar(DRV+':\AstaI\AstaI.exe'), SW_SHOW);
showmessage(IntToStr(A));
AAAAAさん、ありがとうございました。
DRV:Ansistring;
としたら、完全にうまく働きました。
正直、AnsiChar、Charとか使ったことがないので、何が何だか分かりませんので、
助かりました。
ツイート | ![]() |