aaachr(10)+chr(13)bbbchr(10)+chr(13)cccchr(10)+chr(13)ddd
이런식으로 데이타가 있을때여...
chr(10)+chr(13)를 기준으로 짤라서
aaa,bbb,ccc,ddd 이런 데이타만 배열어 넣어주려고 하거든여..
비베에서는 split 함수로 짤라주면 되던데...
델파이 에서는 어떻게 해야되나여?
검색해봐두 답이 잘 나오질 않네여..
만약 없다면 어떻식으로 해야될지...좀 가르쳐주세여..
그럼 좋은 하루들 보내세여..^^
지금 같이 #10, #13 이라면 2가지가 더 있겠네요...
1. 위에 조강일님이 말씀하신 ExtractStrings 사용.
2. TStrings.Delimiter, TStrings.DelimitedText 이용
1번과 2번을 특수한 경우라고 말씀드리는 것은 내부코드에서 #10, #13을 이미 구분자로 사용하고 있기 때문입니다.
아래는 예제입니다.
procedure TForm1.Button4Click(Sender: TObject);
const
TEST_STR = 'aaa'#10#13'bbb'#10#13'ccc'#10#13'ddd'#10'eee'#10#13'fff'; // 데이터
// 이 데이터에서 eee 전에는 #10만 있죠?
var
nIndex :Integer;
strOut :String;
tempList :TStringList;
begin
tempList := TStringList.Create;
try
try
ExtractStrings([#13, #10], [' '], TEST_STR, tempList); //ExtractStrings([], [' '], TEST_STR, tempList); // 내부 코드로 보면, 두 문장은 서로 동일한 문장입니다.
// ExtractStrings를 사용하시면 1,2번째 인자가 set of Char 이기 때문에 배열 형식으로 주셔야 하고요....
// 4번째 인자는 TStrings 인데, TStrings 는 가상 클래스이기 땜시, 실지 구현이 들어있는 상속된 클래스의 인스턴스를 넣어 주어야 합니다.
for nIndex := 0 to tempList.Count - 1 do
strOut := strOut + tempList.Strings[nIndex] + #13#10;
ShowMessage(strOut);
tempList.Clear;
strOut = '';
//tempList.Delimiter := Chr(10);
//tempList.QuoteChar := Chr(0);
//tempList.DelimitedText := TEST_STR;
tempList.Text := TEST_STR; // 물론 위 코멘트와 이 문장이 서로 똑같죠? 내부코드로 보면?
for nIndex := 0 to tempList.Count - 1 do
strOut := strOut + tempList.Strings[nIndex] + #13#10;
ShowMessage(strOut);
except
exit;
end;
finally
tempList.Free;
end;
end;