2009-07-17 2 views
2

컴퓨터에서 파일을 검색하는 응용 프로그램이 있습니다 (구성 가능한 경로, 유형 등). 현재 일치하는 파일이 발견되는 즉시 데이터베이스에 정보를 추가합니다. 그보다 나는 정보를 데이터베이스에 삽입하기 전에 추가 조작을 위해 메모리에 보관하려고합니다. 목록에 많은 항목이 포함될 수 있습니다. 나는 성과를 중요한 요소로 생각한다. 아이템을 반복 할 필요가있을 수 있으므로 쉽게 코딩 할 수있는 구조가 또 다른 주요 문제입니다. 이 작업을 위해 PHP 스타일 연상 배열을 어떻게 얻을 수 있습니까?파일 목록 정보를 저장할 데이터 유형/구조는 무엇입니까?

답변

1

연관 배열로 http://sourceforge.net/projects/alcinoe/으로 AVL-Tree를 사용해보십시오. 빠른 반복을위한 iterate-method가 있습니다. 그의 baseclass에서 파생하고 자신의 비교자를 구현해야 할 수도 있지만 사용하기 쉽습니다.

예제가 포함됩니다.

4

Delphi 2009를 사용하는 경우 TDictionary를 사용할 수 있습니다. 두 가지 일반 매개 변수가 필요합니다. 첫 번째는 파일 이름에 대한 문자열이어야하며 두 번째 파일은 연결할 데이터 유형이 될 것입니다. 또한 3 개의 내장 열거자를 가지고 있는데 하나는 키 - 값 쌍을위한 것이고 하나는 키 전용이고 다른 하나는 값 전용입니다.

3

다른 해결책은 표준 TStringList를 사용하는 것입니다.

정렬되어 있으며 dupAccept 이외의 중복 설정이있는 경우 indexof 또는 indexofname을 사용하여 목록의 항목을 빠르게 찾을 수 있습니다.

또한 이름에 첨부 된 개체 정보를 저장할 수있는 개체 추가 기능이 있습니다. D2009부터 TStringList에는 OwnsObject 속성이 있습니다.이 속성을 사용하면 개체 정리를 TStringList에 위임 할 수 있습니다. D2009 이전에는 스스로 처리해야합니다.

2

이 중 많은 부분이 목록을 사용하는 방법과 규모에 따라 다릅니다. 스택이나 대기열로 사용하려는 경우 TList가 정상적으로 작동합니다. 특정 항목에 대한 목록을 검색해야하는 경우 빠른 검색을 허용하는 항목이 필요합니다. TDictionary (2009) 또는 TStringList (2009 이전)가 가장 가능성있는 선택입니다.

동적 배열도 사용할 수 있지만 사용하면 메모리를 다시 할당 할 때마다 SetLength 사용을 최소화해야합니다. TList가 이것을 관리하므로 TList 사용을 제안했습니다. 얼마나 많은 것을 미리 알았 으면 동적 배열을 사용하고 그 길이를 설정하십시오.

메모리에 저장할 수있는 것보다 많은 항목이있는 경우 선택 사항도 변경됩니다. 그 시점에서 나는 처리 할 레코드를 저장하기 위해 데이터베이스 테이블이나 tFileStream을 사용하고 처리를 위해 테이블 ​​/ 스트림의 시작 부분을 찾는다.

관련 문제