16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:プログラムを起動するときの引数を生成"
この発言は #01157 ぜえた さんのRE:プログラムを起動するときの引数を生成 に対するコメントです
この発言に対し以下のコメントが寄せられています
#01159 ぜえた さん RE^2:プログラムを起動するときの引数を生
ぜえたさんどもです。
>> Formatを利用すれば、簡単になるかなぁと思ったのですが、そんなでもなかっ
>> たです(^^;
最初考えたんですが、Formatに変な文字渡すと何が起るか分からなかったので、
力技にしてしまいました(^_^;(第一引数は人間が指定することが多いので)
して、ArgListに対象が無いと、例外発生してしまいますね。
(もっとも私のも、置き換えないので変になりますけど)
私の例で、リストに無い場合の対応コーディングです。
function FArgGen(Target:string;argList:TStringList):string;
var
s,s1:string;
i,j,l:integer;
TS:TStringList;
b:boolean;
begin
TS:=TStringList.Create;
try
//Target Cut
s:=TarGet;
l:=Length(Target);
if l<2 then begin
Ts.Add(Target);
end else
while true do begin
i:=ansipos('%',s);
if i = 0 then begin
TS.Add(s);
break;
end else begin
s1 := Copy(s,1,i - 1);
TS.Add(s1);
s := Copy(s,i,l);
s1 := Copy(S,2,1);
if s1 = '%' then begin
TS.Add('%');
end else begin
TS.Add('%'+s1);
end;
s:=Copy(S,3,l);
end;
end;
//ListChange
//IndexOfでやろうとしたけど、大文字小文字を区別しないからやめた
//見つからなかったら ブランクにする
for j:=0 to ts.count - 1 do begin
if (copy(ts.strings[j],1,1)='%')and
(length(ts.strings[j]) = 2 ) then begin
b:=false;
for i:=0 to arglist.count - 1 do begin
s:='%'+Copy(arglist.strings[i],1,1);
if ts.strings[j] = s then begin
s1:=Copy(arglist.strings[i],2,Length(arglist.strings[i]));
ts.strings[j] := s1;
b:=true;
break;
end;
end;
if b=false then
ts.strings[j] := '';
end;
end;
//ResultSet
Result := '';
for i:=0 to TS.Count - 1 do begin
Result := Result +
TS.Strings[i];
end;
finally
TS.Free;
end;
end;
ー以上ー kench@nifty.ne.jp KENCH/平内健一
Original document by KENCH 氏 ID:(GDH01352)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|