パラメータの渡し方で質問です。
エラー内容:コンパイル時に「変数パラメータに定数オブジェクトを渡すことはできません」
”StringL2[0]”をString型のパラメータに渡すにはどうのようにするとよろしいでしょうか?
IBDatabase1.Connected:=Active;
StringL1:=TstringList.Create;
StringL2:=TstringList.Create;
if Opendialog1.Execute then begin
StringL1.LoadFromFile(Opendialog1.FileName);
for i:=0 to StringL1.Count-1 do begin
StringL2.CommaText := StringL1[i];
********************************
yzx(StringL2[0]);
********************************
end;
end;
function TForm1.yzx(var Str:String):String;
begin
処理
end;
var
hogehoge:String;
hogehoge := StringL2[0];
yzx(hogehoge);
StringL2[0] := hogehoge;
ありがとうございます。
でも項目がたくさんあるんですよ...
この方法がベストでしょうか?
めっせーじ:「StringListそのものを引数で渡せ」
何かのコンバーターみたいなものでしょうか。
別に見た目を気にしないとか、今使えれば、もうソースはいらないとか
言うのであれば、
procedure hoe
var
i: integer;
procedure yzx;
begin
StringL2.CommaText:= StringL1[i];
//処理
end;
begin
for i:=0 to StringL1.Count-1 do
begin
yzx;
end;
end;
のような姑息な手段もあります。
ただ、コンパイル時に yzx は展開されると聞いたことがある(遥か昔)
バイナリーはずらずらと yzx の中身を書き連ねたものになるとか
ならないとか。
********************************
yzx(StringL2, 0);
********************************
function TForm1.yzx(Strs:TStringList; i:Integer):String;
var
str:String;
begin
str := Strs[i];
処理
Strs[i] := str;
end;
ありがとうございました。
大変、参考になりました。
ツイート | ![]() |