Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2009, 16:48   #1
blackstersl
Форумчанин
 
Аватар для blackstersl
 
Регистрация: 23.08.2008
Сообщений: 374
Вопрос Как вызвать функцию?

Привет, вопрос очень тупой НО: вот нашёл функцию для узнавания размера файлов, а как её вызвать, например так что б label показывала результат?Спасибо.

Код:

function GetNormalSize(Size: Int64): string; // в этой функции идет преобразования
var // в b, kb, mb, gb
  kb, Mb, Gb: Real;
begin
  Result := IntToStr(Size) + ' b';
  kb := Size / 1024;
  kb := Trunc(kb * 10) / 10;
  if kb < 0.7 then
    Exit;
  Result := FloatToStr(kb) + ' kb';
  Mb := kb / 1024;
  Mb := Trunc(Mb * 10) / 10;
  if Mb < 0.7 then
    Exit;
  Result := FloatToStr(Mb) + ' Mb';
  Gb := Mb / 1024;
  Gb := Trunc(Gb * 10) / 10;
  if Gb < 0.7 then
    Exit;
  Result := FloatToStr(Gb) + ' Gb';
end;
blackstersl вне форума Ответить с цитированием
Старый 07.06.2009, 16:51   #2
Disel
Форумчанин
 
Аватар для Disel
 
Регистрация: 08.01.2009
Сообщений: 180
По умолчанию

Вот так должно работать

Код:
Label1.Caption:=GetNormalSize(Size);
"Все что натыкано на клаве, ведет тебя к погибели иль славе"
Если помог нажми на весы
Disel вне форума Ответить с цитированием
Старый 07.06.2009, 16:55   #3
blackstersl
Форумчанин
 
Аватар для blackstersl
 
Регистрация: 23.08.2008
Сообщений: 374
По умолчанию

что то не работает -(
blackstersl вне форума Ответить с цитированием
Старый 07.06.2009, 17:06   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,238
По умолчанию

Как на счёт этого
Код:
function SizeToStr(const i64Size: Int64):string;
const
   i64GB = 1024 * 1024 * 1024;
   i64MB = 1024 * 1024;
   i64KB = 1024;
begin
 if i64Size div i64GB > 0 then
   Result := Format('%.2f Гб', [i64Size / i64GB])
 else
 if i64Size div i64MB > 0 then
   Result := Format('%.2f Мб', [i64Size / i64MB])
  else
 if i64Size div i64KB > 0 then
   Result := Format('%.2f Кб', [i64Size / i64KB])
  else
   Result := IntToStr(i64Size) + ' Байт';
end;
Alter вне форума Ответить с цитированием
Старый 07.06.2009, 17:21   #5
blackstersl
Форумчанин
 
Аватар для blackstersl
 
Регистрация: 23.08.2008
Сообщений: 374
По умолчанию

Ладно, а как вызвать?Как по нажатию мышкой на item в listbox-e показывался результат на label?

Последний раз редактировалось blackstersl; 07.06.2009 в 17:26.
blackstersl вне форума Ответить с цитированием
Старый 07.06.2009, 18:36   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код:
Procedure TForm1.ListBox1Click(Sender: TObject);
Begin
Label1.Caption:=SizeToStr(6400);
End;
Всегда рад помочь!

Последний раз редактировалось Terran; 07.06.2009 в 18:38.
Terran вне форума Ответить с цитированием
Старый 07.06.2009, 18:45   #7
blackstersl
Форумчанин
 
Аватар для blackstersl
 
Регистрация: 23.08.2008
Сообщений: 374
По умолчанию

Всё время показывает 6,14 кб.
blackstersl вне форума Ответить с цитированием
Старый 07.06.2009, 18:46   #8
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от blackstersl Посмотреть сообщение
Всё время показывает 6,14 кб.
Число 6400 я написал исключительно для примера. Вы вместо числа подставляйте значения и будет другой результат.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 07.06.2009, 18:51   #9
blackstersl
Форумчанин
 
Аватар для blackstersl
 
Регистрация: 23.08.2008
Сообщений: 374
По умолчанию

чёт вообще не то! ладно, может гдет исходник найду...
blackstersl вне форума Ответить с цитированием
Старый 07.06.2009, 18:59   #10
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Что-то я не совсем понял, что вам именно нужно. Предположим, что у вас в ListBox прописаны пути к файлам, тогда при нажатии на итем у вас будет появляться размер того файла на который вы нажали.
Возьмите код с поста №4 + вот этот код:
Код:
Function GetFileSize(Const FileName: String):longint;
Var
SearchRec:TSearchRec;
Begin
If FindFirst(ExpandFileName(FileName), faAnyFile,SearchRec)=0 Then
Result:=SearchRec.Size
Else
Result:=-1;
FindClose(SearchRec);
End;
Procedure TForm1.ListBox1Click(Sender: TObject);
Begin
Label1.Caption:=SizeToStr(GetFileSize(ListBox1.Items[ListBox1.ItemIndex]));
End;
И всё будет работать.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как вызвать ф-ыю? Natok Помощь студентам 4 28.05.2009 15:01
Вызвать адрес памяти как функцию XAOC-forever Общие вопросы Delphi 18 07.03.2009 20:32
Как вызвать процедуру ??? Marat Помощь студентам 8 02.03.2007 15:11
как вызвать в Dll по указателю функцию, которая определена в главном потоке? SaintRain Общие вопросы Delphi 1 25.11.2006 08:27
как вызвать из Dll функцию, которая определена в главном потоке? SaintRain Win Api 1 23.11.2006 20:08