Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
4-1130415747
keal
2005-10-27 16:22
2006.01.01
Слежение за винчестером


2-1134300322
ЕвгенийГость
2005-12-11 14:25
2006.01.01
Пожалуйста, напомните как обрабатывать нажатия клавиш... особенно


14-1133737708
Kerk
2005-12-05 02:08
2006.01.01
Вывести числа от 1 до 100 без циклов и условий


2-1134474162
ZSergey
2005-12-13 14:42
2006.01.01
Почему не работает insert в LocalSQL?


1-1133863473
general
2005-12-06 13:04
2006.01.01
Вопрос по мышиному колесу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский