String型に渡すには?

解決


ゆうこりん  2006-04-07 20:18:37  No: 20903

パラメータの渡し方で質問です。
エラー内容:コンパイル時に「変数パラメータに定数オブジェクトを渡すことはできません」
”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;


ん?  2006-04-07 20:35:24  No: 20904

var
  hogehoge:String;

  hogehoge := StringL2[0];
  yzx(hogehoge);
  StringL2[0] := hogehoge;


ゆうこりん  2006-04-07 21:01:49  No: 20905

ありがとうございます。

でも項目がたくさんあるんですよ...

この方法がベストでしょうか?


こりん星人  2006-04-07 21:49:44  No: 20906

めっせーじ:「StringListそのものを引数で渡せ」


姑息な手段  2006-04-12 01:41:05  No: 20907

何かのコンバーターみたいなものでしょうか。
別に見た目を気にしないとか、今使えれば、もうソースはいらないとか
言うのであれば、

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 の中身を書き連ねたものになるとか
ならないとか。


こりん星からのメッセージです  2006-04-12 17:24:09  No: 20908

********************************
       yzx(StringL2, 0); 
********************************

function TForm1.yzx(Strs:TStringList; i:Integer):String;
var
  str:String;
begin
  str := Strs[i];
  処理
  Strs[i] := str;
end;


ゆうこりん  2006-04-12 22:34:57  No: 20909

ありがとうございました。
大変、参考になりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加