delphi XE7 배열 작업에서 누락된find(POS) 기능
1736 단어 Delphi
예를 들어, 배열 더하기
var
A: array of integer;
B: TBytes = [1,2,3,4]; //Initialization can be done from declaration
begin
...
A:=[1,2,3]; // assignation using constant array
A:=A+[4,5]; // addition - A will become [1,2,3,4,5]
...
end;
배열 삽입
var
A: array of integer;
begin
...
A:=[1,2,3,4];
Insert(5,A,2); // A will become [1,2,5,3,4]
...
end;
배열 삭제
var
A: array of integer;
begin
...
A:=[1,2,3,4];
Delete(A,1,2); //A will become [1,4]
...
end;
배열 연결
A := Concat([1,2,3],[4,5,6]); //A will become [1,2,3,4,5,6]
왜xe7에서 수조에 대해 이렇게 큰 변화를 해야 하는가. 물론 먼저 수조 프로그래밍을 편리하게 해야 한다. 사실 더욱 깊은 원인은 ansistring이 모바일 플랫폼에서 부족하기 때문이다.
많은 과거의 코드들이 byte를 ansichar로 처리했기 때문에 모바일 플랫폼에 도착하면 이 코드들은 모두 도망가지 못한다.그리고 개조하기 어려워요.
그럼 Tbytes에서 전통적인 ansistring을 교체하는 것만 사용하세요.그래서 이 전통적인 문제를 해결하기 위해 수조 조작에 이렇게 많은 방법을 추가했다.
그러면 지금 문제가 생겼다. 전통적인pos기능이 들어가지 않아서 많은pos를 사용하는 조작은 개조할 수 없다.
모르다안에 가입?현재의 임시적인 방법은 스스로 이 문제를 해결하기 위해find(pos) 함수를 만드는 것이다.
이후pos와 충돌하지 않기 위해 함수 이름은find라고 하는데, 기능은 한 수조에서 다른 수조를 찾아 위치를 되돌려주는 것이다.
function Find(const sub, Buffer:TBytes): Integer;
var
N: Integer;
begin
N := Length(sub);
if N>0 then
for Result := low(Buffer) to high(Buffer)-(N-1) do
if CompareMem(@Buffer[Result], sub, N) then
exit;
Result := -1;
end;
이렇게 하면 이걸로 원래의 ansistring의pos 조작을 바꿀 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.