掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
コード補完の仕組みを実装するには (ID:48695)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>通りすがり さん ご返信ありがとうございます。 GItHubのリンク見てみました。 まだソースは動かしてはいませんが、すごく参考にはなりそうです。 因みに、以下の様なものを組んでいます。 「';:=''"!$%&+-*`@~^\|/><?()[]{}, '」の部分を差し替え可能にして、 多言語対応にして、多少緩いけれども、幅の広いコード補完を目指しています。 また、問題のオブジェクトとコンポーネントの認識は、 放り込んだソースの宣言部分を解釈し、あらかじめ登録しておいた予約語と 引っ掛ければ、抽出、分解、解釈は出来そうな気がしないでもないのですが・・・。やってみないとわからないですが。。。 function bunkatu(st,st2:TStringList):boolean; var i:integer; st3:TStringList; s:string; begin st3 := TStringList.Create; st3.Clear; s:= ';:=''"!$%&+-*`@~^\|/><?()[]{}, '; //st.Text := StringReplace(st.Text, ',', char(13), [rfReplaceAll]); for i := 0 to length(s) -1 do begin st.Text := StringReplace(st.Text, s[i] , char(13), [rfReplaceAll]); end; for i := 0 to st.Count -1 do begin if 0 < ansipos('.',' ' + st[i]) then begin if -1 = st3.IndexOf(st[i]) then begin st3.Add(st[i]); end; end; end; st2.text := st3.Text; st3.Free; end; function bunkatu2(st:string;st2:TStringList):boolean; var i,i1:integer; st3:TStringList; s:string; begin st3 := TStringList.Create; st3.Clear; s:= '.'; //st.Text := StringReplace(st.Text, ',', char(13), [rfReplaceAll]); //for i := 0 to length(s) -1 do begin st3.Text := StringReplace(st, s , char(13), [rfReplaceAll]); //end; i1 := 0; for i := 0 to st3.Count -1 do begin if st3[i] <> '' then begin if i1 = 0 then begin if st3.Count -1 > i then if st3[i+1] <> '' then begin st2.Add(st3[i]+','); inc(i1); end; end else begin st2[st2.Count -1] := st2[st2.Count -1] + st3[i]; i1 := 0; end; end; end; st3.Free; end; procedure TForm1.Button1Click(Sender: TObject); var st1,st2,st3:TStringList; i,i1:integer; begin st1 := TStringList.Create; st1.Clear; st2 := TStringList.Create; st2.Clear; st3 := TStringList.Create; st3.Clear; if not form1.OpenDialog1.Execute then exit; st1.LoadFromFile(form1.OpenDialog1.FileName); bunkatu(st1,st2); st1.Clear; for i := 0 to st2.Count -1 do begin; st1.Clear; bunkatu2(st2[i],st1); for i1 := 0 to st1.Count -1 do begin if -1 = st3.IndexOf(st1[i1]) then begin st3.Add( st1[i1] ); end; end; end; memo1.Lines.Text := st3.Text; memo1.Lines.SaveToFile( ExtractFilePath( ParamStr( 0 ) ) + 'List.csv' ); end
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.