스트링 배열에서 이동이라고 해야하나...
배열에서 하나씩 밀고 당기고 하고 싶은데..
배열이 스트링 형이라 그런지 당췌 @!%@%@^@#$
스트링 그리드에서 컬럼이동하였을 경우 변경사항을
해당 배열에 저장하려고 시작했는데...
생각처럼 되질 않네요... 누가좀 알케주세요...
-----------------------------
<!--CodeS-->
var
ary : array [0..9] of string;
fValue : string;
sFrom, sTo, size : integer;
begin
sFrom := 0;
sTo := 9;
size := sTo - sFrom;
fValue := ary[sFrom];
CopyMemory(@ary[sFrom], @Channel_Name[sFrom+1], size); <<<< 문제점!!
ary[sTo] := fValue ;
end;
<!--CodeE-->
--------------------------------------
제가 뭔가를 확실히 모르고 있는거 같은데... 좀 알려주세요.....
데스티네이션에 값을 넣을수가 없는게 정상입니다.
왜냐? 스트링을 처리할때 길이나 내용, 복사된값등을 처리하는 방식이 많이 다르다는거죠.
스트링의 묘미는 팁란에 찾아보시면 재미가 쏠쏠합니다.
C의 문자열과는 차원이 다름니다.
그럼 해결은 어떻게 하냐?
ary[sForm] := Channel_Name[sFrom+1];
질문자가 원하는건 하나의 문자열에서 앞으로 좀 당기고 밀고 하는 방식을
하고 싶은가 봅니다..
위의 식대로 하면 string이라는 문자열이 배열로 생깁니다. (쉽게 말해 2차원 문자열이죠)
그럼 더 간단하게 어케하냐?
ary, Channel_name : String;
으로 선언하고 다음과 같이 복사 합니다.
ary := copy(Channel_name , sForm+1, Len);
채널네임이라는 문자열에서 몇바이트부터 워떤길이로 복사해서 ary에 넣겠다라는 뜻이죠.
채널 네임을 유지할 필요가 없다면.
delete(Cahnnel_name, 1, 1);
하면 앞에 한글자 지워집니다.
델파이는 가끔 너무 쉬워서 당혹스럽게 할때가 있답니다.
즐코하세요~