버퍼 위치 가져오기 (Get Buffer Position)
이 문서는 버퍼의 현재 읽기/쓰기 위치를 가져오는 방법에 대해 설명합니다. 버퍼를 생성할 때 읽기/쓰기 위치는 0 바이트로 설정되며, 데이터를 버퍼에 추가할 때 이 위치는 순차적으로 이동합니다. 이 액션을 사용하여 현재 버퍼의 위치를 확인할 수 있습니다.
주요 내용
- 버퍼 ID:
Create Buffer액션에서 반환된 고유한 버퍼 ID 값을 사용해야 합니다. - 타겟 변수: 위치 값이 반환될 변수를 지정합니다. 이 변수를 임시 로컬 변수로 설정할 수 있으며, 그러면 해당 변수는 메모리에서 자동으로 생성 및 제거됩니다.
액션 문법
GetBufferPosition(buffer, target_variable);
인자 설명
| 인자 | 설명 |
|---|---|
| Buffer | 버퍼 인덱스 (변수에 저장됨) |
| Position | 버퍼 내에서의 읽기/쓰기 위치 (바이트 단위) |
예제
다음은 주어진 버퍼의 읽기/쓰기 위치를 가져오는 코드 예제입니다. 만약 위치가 0이 아닐 경우, 위치를 버퍼의 시작으로 설정합니다.
var buffer_id = CreateBuffer(1024); // 1024 바이트 버퍼 생성
var position; // 위치를 저장할 변수를 선언
GetBufferPosition(buffer_id, position); // 현재 버퍼 위치를 가져옴
if (position != 0) {
position = 0; // 위치가 0이 아닐 경우, 버퍼의 시작으로 설정
}
다양한 활용 및 응용 예제
- 버퍼에서 데이터 읽기
버퍼에 저장된 데이터를 읽기 위해 현재 위치를 확인하고 데이터를 읽어올 수 있습니다.
gml var buffer_id = CreateBuffer(256); // 데이터 추가... var position; GetBufferPosition(buffer_id, position); if (position > 0) { var data = BufferRead(buffer_id, position); // 현재 위치에서 데이터 읽기 }
- 버퍼에 데이터 쓰기
데이터가 얼마나 저장되었는지 확인한 후 새로운 데이터를 버퍼에 추가할 수 있습니다.
gml var buffer_id = CreateBuffer(512); var position; GetBufferPosition(buffer_id, position); if (position < 512) { // 버퍼가 가득 차지 않았을 경우 BufferWrite(buffer_id, "새로운 데이터", position); // 현재 위치에 데이터 쓰기 }
- 버퍼 크기 조정
필요한 경우 버퍼의 사이즈를 조절할 수 있습니다.
gml var buffer_id = CreateBuffer(1024); var position; GetBufferPosition(buffer_id, position); if (position > 512) { // 현재 위치가 512 바이트를 넘을 경우 ResizeBuffer(buffer_id, 2048); // 버퍼 크기 변경 }
버퍼 위치 가져오기는 데이터 처리에서 매우 중요한 기능이며, 다양한 경우에 유용하게 사용될 수 있습니다.