염치없게 글을 또올리게 되었습니다.
알고 싶은것은 스트링그리드에 값을 넣는 방법인데
Str:=123,123,123,123,123,.....
이렇한 문자열이 있습니다. 구분자는 ,가되겠구여..
하나의 셀안에 넣는 방법은 알겠는데..
구분자로 구분지어서 ,와 ,사이의 값들만 스트링그리드에 넣구 싶습니다.
어찌해야 할지 도저히 생각이 안나서요..
많은 답변 부탁 드립니다.
구분자로 구분되어 있는지료를 읽은 방법은 여러가지가 있겠지만..
다음은 전철호님이 올리신 예제 입니다 참고 하십시오.
{
구분자로 이루어진 문자열을 분리하여 읽기
예를 들어 Text 화일에서
1111,전철호,경기도 수원,212-9667
PasString(str,',',1); -> 1111
PasString(str,',',2); -> 전철호
}
function PasCount(const s,delimiters:string):integer;
var
delimiter : Boolean;
Count,i : Integer;
begin
Count := 0;
delimiter := True;
if Length(s) > 0 then
begin
i := 1;
While (Pos(s[i],delimiters) <> 0) and (i <= Length(s)) do inc(i);
For i := i to Length(s) do
if Pos(s[i],delimiters) <> 0 then
delimiter := True
else begin
if delimiter = True then inc(count);
delimiter := False;
end;
end;
PasCount := Count;
end;
function PasString(const s,delimiters : String ; num : Integer) : String;
var
i,j,sLength,sStart,sEnd : Integer;
begin
if PasCount(s,delimiters) >= num then
begin
sStart := 1;
while (Pos(s[sStart],delimiters) > 0) and (sStart <= Length(s)) do
inc(sStart);
for j := 1 to num-1 do
begin
while pos(s[sStart],delimiters) = 0 do inc(sStart);
while pos(s[sStart],delimiters) <> 0 do inc(sStart);
end;
sEnd := sStart;
for i := sStart to Length(s) do
begin
if s[i] = delimiters then Break;
if s[i] <> delimiters then inc(sEnd);
end;
sLength := sEnd - sStart;
PasString := Trim(Copy(s,sStart,sLength));
end else PasString := '';
end;
다음은 전철호님이 올리신 예제 입니다 참고 하십시오.
{
구분자로 이루어진 문자열을 분리하여 읽기
예를 들어 Text 화일에서
1111,전철호,경기도 수원,212-9667
PasString(str,',',1); -> 1111
PasString(str,',',2); -> 전철호
}
function PasCount(const s,delimiters:string):integer;
var
delimiter : Boolean;
Count,i : Integer;
begin
Count := 0;
delimiter := True;
if Length(s) > 0 then
begin
i := 1;
While (Pos(s[i],delimiters) <> 0) and (i <= Length(s)) do inc(i);
For i := i to Length(s) do
if Pos(s[i],delimiters) <> 0 then
delimiter := True
else begin
if delimiter = True then inc(count);
delimiter := False;
end;
end;
PasCount := Count;
end;
function PasString(const s,delimiters : String ; num : Integer) : String;
var
i,j,sLength,sStart,sEnd : Integer;
begin
if PasCount(s,delimiters) >= num then
begin
sStart := 1;
while (Pos(s[sStart],delimiters) > 0) and (sStart <= Length(s)) do
inc(sStart);
for j := 1 to num-1 do
begin
while pos(s[sStart],delimiters) = 0 do inc(sStart);
while pos(s[sStart],delimiters) <> 0 do inc(sStart);
end;
sEnd := sStart;
for i := sStart to Length(s) do
begin
if s[i] = delimiters then Break;
if s[i] <> delimiters then inc(sEnd);
end;
sLength := sEnd - sStart;
PasString := Trim(Copy(s,sStart,sLength));
end else PasString := '';
end;