질문을 맞게 이해 했나 모르겠네요..
while문을 이용해서 파싱해도 되고요.. TStirngList를 이용해도 됩니다.
TStringList에 보면 DelimiterText가 있는데 이를 이용하면 다음과 같습니다.
// AValue가 'a;b;c;d;e;f;g;'일 경우.
procedure Test(const AValue: string);
var
i: Integer;
slList: TStringList;
begin
slList:= TStringList.Create;
try
slList.Delimiter := ';';
slList.DelimiterText := AValue;
AStringGrid.Row[1].Assign(slList); <= 그리드의 Row가 1인곳에 넣는 부분... 문법은 틀릴수 있음.
finally
if Assigned(slList) then
FreeAndNil(slList);
end;
end;
slList를 for문을 이용해서 그리드에 넣거나 그리드의 Row에 바로 넣거나 할수 있습니다.
두번째 변경된 값들이..
a
b
c
d
e
f
g
이런 형태라고 했는데 값들에 캐리지리턴값이 있는것을 표현 한건가요?
그렇다면 그냥 TStringList에 그냥 값을 넣으면 됩니다.
procedure Test(const AValue: string);
var
i: Integer;
slList: TStringList;
begin
slList:= TStringList.Create;
try
slList.Text := AValue;
AStringGrid.Row[1].Assign(slList); <= 그리드의 Row가 1인곳에 넣는 부분... 문법은 틀릴수 있음.
finally
if Assigned(slList) then
FreeAndNil(slList);
end;
end;
위의것과 비교 하시면 이해햐기 편할겁니다.
TStringList를 한번 찾아 보세요..
주의: delphi에서 작성하지 않고 바로 적는것이라 컴파일이 안될수 있습니다.
참고만 하세요.
vhrrns 님이 쓰신 글 :
: 신호를 보내면
:
: a;b;c;d;e;f;g;
:
: 이런식으로 와서
: 결과를 ; 로 구분하여 자르기 위한 선언으로
:
: aMsg : Array[0..100] of String;
: tmpStr,memotext : String;
: Out_CpeIp : String;
:
: 이렇게 변수를 주고
:
: if IFDeviceDataList <> nil then
: f_dm.Common.SendDataToAPS(IFCustomerData , IFDeviceDataList, nil, nil, ResultMessage, ResultSeqNo, WipNumSeqNo);
: i := 0;
: tmpStr := ResultMessage;
: while Pos(';',tmpStr) > 0 do
: begin
: aMsg[i] := Copy(tmpStr,1,Pos(';',tmpStr)-1);
: inc(i);
: tmpStr := Copy(tmpStr,Pos(';',tmpStr)+1,Length(tmpStr)-Pos(';',tmpStr));
: end;
: if Trim(tmpStr) <> '' then
: begin
: aMsg[i] := tmpStr;
: end;
:
: 이렇게 구분해서 읽어와서 그리드에 뿌려왔습니다.
: 근데 정보가
:
: a
: b
: c
: d
: e
: f
: g
:
: 이런 식으로 오게 바뀌었는데 어떤 방향으로 코딩을 해가야 값들을 불러올 수 있을까요?_?