Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.08;
Скачать: CL | DM;

Вниз

Поиск по файлам   Найти похожие ветки 

 
KorvinOE ©   (2005-10-31 18:05) [0]

Приветствую, мастера!
Имеется архив файлов (.doc). Необходимо организовать поиск по содержимому файлов. А точнее хотелось бы узнать какими ф-циями API можно вызвать поиск, который есть в Windows-Explorer по клавише F3. Зарание спасибо!


 
KorvinOE ©   (2005-11-01 19:22) [1]

Это что получается? Windows может искать по содержимому DOC-файлов без помощь Word-а, а Delphi не может?


 
umbra ©   (2005-11-01 19:47) [2]

можно открыть файл, и читать из него, проверяя, не совпало ли прочитанное из файла с образцом. В ворде текст содержится в уникоде, поэтому строку-образец надо перевести в уникод. для английских букв достаточно перед каждым символом вставить #0, для русских - #4.


 
KorvinOE ©   (2005-11-02 09:41) [3]

Поправте меня пожалуйста если я не прав!
Уникод (Unicode) - это UTF-8. В делфи для смены кодировки есть такие функции:
   UnicodeToUtf8();
   Utf8ToUnicode();
   Utf8ToAnsi();
   AnsiToUtf8();
И если я читаю из файла .DOC следующим кодом:

var
 F: TextFile;
 k: Widestring;
 i,j: integer;
 S: string;
begin
AssignFile(F,"1.doc");
Reset(F);
while not EOF(f) do
 begin
   readln(f,k);

   S:=Utf8ToAnsi(k);  //<- Какая ф-ция должна быть здесь?

   Memo1.Lines.Add(S);
   inc(i);
 end;

end;

, то из всего файла в мемо записывается 4-5 строчек в каждой по "|".
Поправьте, плиз, т.к. с кодировками я ещё не сталкивался


 
umbra ©   (2005-11-02 10:24) [4]


> Уникод (Unicode) - это UTF-8


Уникод - это стандарт, где каждому символу каждого языка соответствует уникальный код. Кроме UTF-8 может быть еще UTF-16.


>  F: TextFile;
>


Доковский файл - не текстовый, он бинарный.


>    readln(f,k);
>


readln читает файл до первого символа конца строки. В бинарном файле этот символ может быть где угодно.

Для бинарных файлов лучше использовать TFileStream.


 
KorvinOE ©   (2005-11-02 12:34) [5]

Спасибо umbra! С помощью TFileStream получилось.


 
KorvinOE ©   (2005-11-02 16:11) [6]

ЧТО ЭТО?
Вот код:

procedure TForm1.Button3Click(Sender: TObject);
var
 P: array [0..255] of WideChar;
 F: TFileStream;
 S: string;
begin
F:=TFileStream.Create("D:\1.doc",fmOpenRead);

while not (F.Size = F.Position) do
   begin
      F.Read(P,SizeOf(P));
      S:=S+WideCharToString(P);
   end;
F.Free;
RichEdit1.Text:=S;
end;

, который открывает указанный файл в RichEdit. Размер массива "Р" указал случайно (255). Но если поменять размер массива на другой, то ничего работать так как надо не хочет.
ВОПРОС: Правильно ли я преобразую Unicode в String? И Как мне одной командой, а не циклом, загрузить сразу весь файл?


 
KorvinOE ©   (2005-11-02 18:32) [7]

> readln читает файл до первого символа конца строки. В бинарном файле этот символ может быть где угодно

А как с этим справиться. При чтении файла я получил WideString. Но в ней куча этих символов конца строки. И всякие попытки преобразовать WideString в String, чтобы вывести результат в Мемо, обвенчались тем, что я получаю только те символы, которые стоят до первого символа конца строки.
Тот код что я написал до этого работает криво и не для всякого документа.
Как же конвертировать WideString в String?


 
umbra ©   (2005-11-02 19:16) [8]

дело в том, что в доковском файле сам текст занимает только меньшую часть. И он расположен в конкретном месте файла. Чтобы читать именно текст, а не служебную информацию, данные о стилях, шрифтах и т.д. надо читать начиная с определенного места файла, которое указано тоже где-то в файле. В общем, надо разобраться с форматом документа ворд. В другой Вашей ветке про вывод текста в мемо Digitman дал ссылку на сайт, откуда можно скачать спецификацию формата документа ворд. Для извлечения текста лучше сначала изучить спецификацию.


 
KorvinOE ©   (2005-11-03 09:18) [9]


> umbra ©   (02.11.05 19:16) [8]

Спасибки, umbra! По ссылке обсуждение похожей темы:
http://delphimaster.net/view/2-1129763043/



Страницы: 1 вся ветка

Текущий архив: 2006.01.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-1134409915
Джо
2005-12-12 20:51
2006.01.08
GUI и цена программы


14-1134438087
fester
2005-12-13 04:41
2006.01.08
ТАУ


2-1134836874
Gamar
2005-12-17 19:27
2006.01.08
координаты мыши относительно компонента


6-1127472664
Shamansky
2005-09-23 14:51
2006.01.08
PHP и Delphi


4-1130880834
Freeon
2005-11-02 00:33
2006.01.08
Помогите разобраться с прохожднием всех каталогов