Текущий архив: 2006.01.01;
Скачать: CL | DM;
Вниз
dbf viewer Найти похожие ветки
← →
oleggar © (2005-12-02 13:47) [0]не знаете ни одного dbf просмотрщика или редактора ,который бы позволил сохранять Dbf файл как txt ?
Я свой сделал ,он это делает со скоростью 1мб/сек на P4 2 ГГц (за счет ассемблерного кода) ,но я хочу сравнить с другими по скорости..
← →
Jeer © (2005-12-02 13:54) [1]А зачем ?
Это разовая операция, как бы.
Не встречал реальных приложений, работающих с dbf файлами объемом более сотен Mbyte
Это всего 3-5 мин выгрузки.
← →
han_malign © (2005-12-02 14:00) [2]
> (за счет ассемблерного кода)
- болеешь? Убери ассемблер, и прибавь глубину буфера чтения/записи(оптимальныя 65К)... А для полного счастья можешь чтение через File Mapping сделать:
interface
uses Windows;
type
TFileMappingData = class
private
F_hFile: THandle;
F_hMap: THandle;
F_sFileName: string;
F_pData: pointer;
F_cbSize: integer;
F_dwError: DWORD;
public
constructor Create(const aFileName: string= "");
destructor Destroy; override;
function Reset(const aFileName: string= ""): boolean;
property Data: pointer read F_pData;
property Size: integer read F_cbSize;
property Error: DWORD read F_dwError;
end;
implementation
constructor TFileMappingData.Create(const aFileName: string= "");
begin
F_hFile:=INVALID_HANDLE_VALUE;
Reset(aFileName);
end;
destructor TFileMappingData.Destroy;
begin
Reset;
end;
function TFileMappingData.Reset(const aFileName: string= ""): boolean;
begin
Result:=F_pData<>nil;
if(CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(aFileName), Length(aFileName), PChar(F_sFileName), Length(F_sFileName))=2)
then exit;
if(F_pData <> nil)then UnmapViewOfFile(F_pData);
if(F_hMap <> 0)then CloseHandle(F_hMap);
if(F_hFile <> INVALID_HANDLE_VALUE)then CloseHandle(F_hFile);
F_pData:=nil;
F_hMap:=0;
F_hFile:= INVALID_HANDLE_VALUE;
Result:= true; F_dwError:= ERROR_NO_DATA;
if(aFileName <> "")then begin
F_hFile:= CreateFile(PChar(aFileName),GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if(F_hFile <> INVALID_HANDLE_VALUE)then begin
F_hMap:= CreateFileMapping(F_hFile, nil, PAGE_READONLY, 0, 0, nil);
if(F_hMap<>0)then begin
F_pData:= MapViewOfFile(F_hMap, FILE_MAP_READ, 0, 0, 0);
if(F_pData <> nil)then begin
F_cbSize:= GetFileSize(F_hFile, nil);
F_sFileName:= aFileName;
F_dwError:= NO_ERROR;
exit;
end else F_dwError:=GetLastError;
CloseHandle(F_hMap);
end else F_dwError:=GetLastError;
CloseHandle(F_hMap);
end else F_dwError:=GetLastError;
Result:=false;
end;
end;
← →
Skyle © (2005-12-02 14:09) [3]C Excel сравни...если он вообще такое сгрызёт...
← →
myor © (2005-12-02 15:48) [4]cdbf [for windows] :-)
← →
alex_*** © (2005-12-02 17:27) [5]через Excel не пробовал?
← →
oleggar © (2005-12-08 15:35) [6]мне нужно обрабатывать сотни dbf (иногда в день) автоматически .filemapping вещь интересная ,а подробнее информация есть о нем ?или этот более полный кусок класса с примером использования найдется ?
← →
Anatoly Podgoretsky © (2005-12-08 16:07) [7]oleggar © (02.12.05 13:47)
Какой же это вьювер?
Еще раз Эксель, типовое средство
Страницы: 1 вся ветка
Текущий архив: 2006.01.01;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.009 c