かなものと申します。
以前にいくつかお世話になっておりました。
今回、どうしてもわからない事が出てきました…
簡単に申し上げると、Perlの下記スクリプトな感じの内容を、
Delphi上で再現させたいのです。
$String = (半角スペースや改行を含んだ1つの文字列);
@data = split(/\n/,$String);
foreach(@data){
if (文字列検索条件) {
$DataList[i] = $_:
i = i + 1;
}
}
数日ほど検索を行っていましたが、どうしてわかりませんでした。
TStringList.Delimiter で、#13を区切りとしてみましたが、
半角スペースも区切りとして認識してしまい、文字列が崩れてしまいました。
現在仮の状態でTMemo横に引き伸ばして、
下記のような感じで使っています。
str1 := (半角スペースや改行を含んだ1つの文字列);
Memo1.Lines.Add(str);
for i := 0 to Memo1.Lines.Count -1 do
begin
if (文字列検索条件) then
begin
DataList[j] := Memo1.Lines.Strings[i];
j := j + 1;
end;
end;
end;
どうか、皆様のお力をお貸し下さい。
情報が足りなければ、追ってご報告致します。
よろしくお願い致します。
OS:WindowsXP SP2
Ver:Delphi 6 Personal
TStringListを つかうのを知っていて
改行でくぎりたいって
ちょっと おまぬけな質問です。
st := TStringList.create
try
st.text := text;
for i := 0 to st.count-1 do
memo1.lines.add(st[i])
finally
st.free
end;
Textプロパティにそのまま押し込めばいいと言うことではないですかね?
レスありがとうございます。
Memo1.Lines.Add(str);
これだとOKなのですが、
var
lines:TStrings;
begin
lines := TStrings.create;
lines.Text := str;
こうした時に、Textの所でエラーが出るのです。
もう少し調べてみたいと思います。
勉強不足で申し訳ないです。
TStrings は抽象クラスですからインスタンスをつくってはいけません。
具体クラス TStringlist を使ってください。
レスありがとうございます。
var
lines:TStringList;
begin
lines := TStringList.create;
lines.Text := str;
これで代入が出来ました。
これで4日も悩んでいました…。
実は、TStringList の Text 使うの(今回のパターン)
が初めてでして、勝手が全然わかっていませんでした…。
抽象クラス・具体クラスというのは、初めて耳にしました。
自分、まだまだ勉強不足ですね。
今までTStringsを使っていたので、
それは間違いだったという事が今回勉強出来ました。
ありがとうございました。
ツイート | ![]() |