Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как можно узнать число символов в DOC файле в Delphi?  (Прочитано 8478 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kharhan
Участник

ru
Offline Offline
Пол: Мужской

« : 29-05-2010 05:41 » 

привет
как можно  узнать число символов в DOC  файле в Delphi?
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 29-05-2010 10:09 » 

могу ошибаться в деталях, но логика следующая:
Код:
var
  f: file of byte;
begin
  AssignFile (f, 'c:\file.txt');
  Reset (f);
  ShowMessage (IntToStr (FileSize (f));
  CloseFile (f);
end;

но с точки зрения субботнего Дао лучше сделать тоже самое через TFileStream.
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 29-05-2010 10:48 » 

x77, это число байт, а не символов...

kharhan, используй TWordApplication и его свойство Characters.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 29-05-2010 10:53 » 

ааа, я протупил. не в DOS файле, а в DOC файле, в смысле, в вордовом...
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 29-05-2010 11:25 » 

Ром, нету у його свойства characters. там всё немножко веселее:

Код:
uses
  ActiveX, ComObj;

function GetCharStats (AFileName: string; AWithSpaces, AInFootnotes: boolean): integer;
var
  w: TWordApplication;
  FileName,
  varIncludeFootnotes,
  varSaveChanges: OleVariant;
  Stats: TOleEnum;
begin
  FileName := AFileName;
  varIncludeFootnotes := AInFootnotes;
  varSaveChanges := FALSE;
  if AWithSpaces then
    Stats := $00000003
  else
    Stats := $00000005;

  w := TWordApplication.Create(nil);
  try
    w.Documents.Open(FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                     EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                     EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
    Result := w.ActiveDocument.ComputeStatistics(Stats, varIncludeFootNotes);
    w.ActiveDocument.Close(varSaveChanges,EmptyParam,EmptyParam);
  finally
    w.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    ShowMessage (IntToStr (GetCharStats (OpenDialog1.FileName, TRUE, TRUE)));
end;
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 29-05-2010 11:32 » 

Кошмар...

А так?

WordApplication1.ActiveDocument.Characters.count
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 29-05-2010 11:52 » new

RXL, неа Улыбаюсь
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #7 : 29-05-2010 11:54 » 

там всё делается через ComputeStatistics, говоришь ей, какая именно статистика тебя интересует (слова, строки, символы, символы с пробелами, параграфы и т.д.), а она тебе возвращает результат. в принципе, удобно, но поскольку это COM-объект, все параметры приходится по ссылке передавать. поэтому лучше такие вещи заворачивать в собственные функции и дёргать уже их.
Записан

kharhan
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 31-05-2010 14:25 » 

спасибо большое .
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines