Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 15:01   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос Вывести версию файла в Label

Добрый вечер! Пытаюсь считать информацию с файла. Использую модуль VersionInfo (выкладываю). Не получается вывести версию файла в Label. Пробую делать так (путь к файлу отображается StatusBar2.Panels[1].Text):
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 GetFileVersion(Form1.StatusBar2.Panels[1].Text);
 Form1.Label3.Caption:=GetFileVersion(Form1.StatusBar2.Panels[1].Text);
end;
Ругается, что [Error] Unit1.pas(147): Incompatible types: 'String' and 'Cardinal'. В чем проблема? Как вывести правильно?
Вложения
Тип файла: zip VersionInfo.zip (1.1 Кб, 89 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 10.01.2010, 15:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

IntTostr?123456789
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.01.2010, 15:44   #3
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
По умолчанию Вот код попробуй

Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  v:integer;
begin
 v:=GetFileVersion(Form1.StatusBar2.Panels[1].Text);
 Form1.Label3.Caption:=IntToStr(v);
end;
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru
zmey31313 вне форума Ответить с цитированием
Старый 10.01.2010, 15:46   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем лишние переменки?
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 Form1.Label3.Caption:=IntToStr(GetFileVersion(Form1.StatusBar2.Panels[1].Text));
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.01.2010, 15:59   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Выводится всегда число: 4294967295. Какую бы папку/файл не выбрал это число не меняется. Что это за число вообще такое?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 10.01.2010, 16:04   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы уверены что функция та что вам нужна?

может вам чтото наподобие этой?
http://msdn.microsoft.com/en-us/libr...03(VS.85).aspx
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.01.2010, 16:27   #7
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Дело в том, что при обращении к GetFileVersion запрос ведет не в VersionInfo.pas ,а в SysUtils (нажмите Ctrl и клацните по GetFileVersion и вы увидите что вас перекинет в SysUtils)

Советую воспользоваться компонентами из набора Utilmind DiskControls Pack, а именно компонентом dcVersionInfo
Пример
http://img6.immage.de/1001c136e901.jpg

Последний раз редактировалось Noor; 10.01.2010 в 16:34.
Noor вне форума Ответить с цитированием
Старый 10.01.2010, 16:50   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Там регистрировать нужно. Мне нужно, чтобы я мог получить ту информацию, которая во вложении). Вот что мне нужно получать и выводить в Lable, например.
Изображения
Тип файла: png Безымянный.png (17.2 Кб, 283 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 10.01.2010, 18:33   #9
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Utilmind DiskControls Pack,ссылку на который я дал, работает без всякой регистрации. Я пользуюсь им уже 2 года.

Я думаю вам проще исплользовать несколько функция да и все.
Вычисление размера каталога
Код:
uses FileCtrl;

function DirSize(Dir: string): integer;
var
  SearchRec: TSearchRec;
  Separator: string;
  DirBytes: integer;
begin
  Result:=-1;
  if Copy(Dir,Length(Dir),1)='\' then
    Separator := ''
  else
    Separator := '\';
  if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then
  begin
    if FileExists(Dir+Separator+SearchRec.name) then
      DirBytes := DirBytes + SearchRec.Size
    else
    if DirectoryExists(Dir+Separator+SearchRec.name) then
    begin
      if (SearchRec.name<>'.') and (SearchRec.name<>'..') then
        DirSize(Dir+Separator+SearchRec.name);
    end;
    while FindNext(SearchRec) = 0 do
    begin
      if FileExists(Dir+Separator+SearchRec.name) then
        DirBytes := DirBytes + SearchRec.Size
      else
      if DirectoryExists(Dir+Separator+SearchRec.name) then
      begin
        if (SearchRec.name<>'.') and (SearchRec.name<>'..') then
          DirSize(Dir+Separator+SearchRec.name);
      end;
    end;
  end;
  FindClose(SearchRec);
  Result:=DirBytes;
end;

//Пример использования
procedure TForm1.Button1Click(Sender: TObject);
var
  DirBytes: integer;
begin
  DirBytes := DirSize('c:\windows');
  Form1.Label1.Caption := IntToStr(DirBytes);
end;
Получение даты создания каталога
Код:
function GetDirTime(const Dir: string): TDateTime;
var
  H: Integer;
  F: TFileTime;
  S: TSystemTime;
begin
  H := CreateFile(PChar(Dir), $0080, 0, nil, OPEN_EXISTING,
    FILE_FLAG_BACKUP_SEMANTICS, 0);
  if H <> -1 then
  begin
    GetFileTime(H, @F, nil, nil);
    FileTimeToLocalFileTime(F, F);
    FileTimeToSystemTime(F, S);
    Result := SystemTimeToDateTime(S);
    CloseHandle(H);
  end
  else
    Result := -1;
end;

//Пример использования: 
ShowMessage(DateTimeToStr(GetDirTime('c:\Program Files')));
Узнать кол-во файлов в папке
Код:
function GetFileCount(Dir: string): integer;
var
  fs: TSearchRec;
begin
  Result := 0;
  if FindFirst(Dir + '\*.*', faAnyFile - faDirectory - faVolumeID, fs) = 0
    then
    repeat
      inc(Result);
    until
      FindNext(fs) <> 0;
  FindClose(fs);
end;

Последний раз редактировалось Noor; 10.01.2010 в 19:43.
Noor вне форума Ответить с цитированием
Старый 10.01.2010, 18:52   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вы дали ссылку на страницу LivePage, там требуют для скачивания зарегистрироваться в этой поганой соц.сети. Вот о какой регистрации идет речь.
Если у вас есть этот набор - выложите его на форуме.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите вывести массив из файла на С + + Olya_Fox Помощь студентам 4 22.10.2009 18:19
При расположении Label на компонентах, место под Label, не реагирует на событие onClick. NavigatorNeba Компоненты Delphi 3 15.11.2008 19:56
Вывести конкретную строку из файла Captain Nemo Общие вопросы Delphi 9 15.05.2007 03:44
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23