Передо мной никогда не стояла задача определения размера файла Delphi . Но после того как где-то увидел вопрос: "как определить размер файла ", мне тоже стало интересно.

Определение размера файла это то же самое, что определение роста удава в известном мультике! Сколько байтов в него поместится, таков и его размер. План такой:

  1. Задаём тип данных размером 1 байт. Это будет запись.
  2. Определяем файловую переменную этого типа.
  3. Начинаем с начала файла и переходим к концу. Сколько переходов - столько и байтов в файле!
Программа будет состоять из Формы , на которую бросим компонент выбора файла - OpenDialog и кнопку Button , по нажатию на которую и будем выбирать файл. Вот, собственно, и обработчик этой кнопки:

procedure
type TSize = Record
Bait: byte;
end;
var F: File of TSize;
Size: Integer;
begin
Size:=0;
with OpenDialog1 do
if Execute then
begin
AssignFile(F, FileName);
Reset(F);
while (not EOF(F)) do
begin
Size:=Size+1;
seek(F, Size);
end;
CloseFile(F);
end;
end;

Программа была написана за пять минут, что называется, "на коленке". Она работает, и для файлов размером до нескольких мегабайт время ожидания результата невелико, несколько секунд. Для больших файлов ожидание затягивается, и программа выглядит "зависшей". Можно изменить программу так, чтобы она считала килобайты (заменить seek(F, Size ) на seek(F, Size*1024 )). Скорость работы возрастёт в 1024 раза, и уже будет приемлемой.

Это была ещё одна демонстрация приёмов работы с файлами. А на самом деле всё гораздо проще! Размер файла возвращается встроенной функцией FileSize . А файл достаточно описать как имеющий тип byte :

procedure TForm1.ButtonClick(Sender: TObject);
var F: File of byte;
Size: Integer;
begin
with OpenDialog1 do
if Execute then
begin
AssignFile(F, FileName);
Reset(F);
Size:=Filesize(F);
Form1.Caption:=IntToStr(Size); // Выводим информацию о размере в заголовок Формы
CloseFile(F);
end;
end;

Есть альтернативный способ работы с файлами Delphi , в котором файл рассматривается как объект. Там также есть встроенные способы определения размера файла. Также приведу процедуру целиком:

procedure TForm1.ButtonClick(Sender: TObject);
var F: TFileStream;
begin
with OpenDialog1 do
if Execute then
begin
F:=TFileStream.Create(Filename, fmOpenRead);
Caption:=IntToStr(F.Size);
F.Free;
end;
end;

Эта процедура выглядит компактнее, работает быстрее, но и требует дополнительной подготовки.

Итак, в данной статье речь пойдет о том, как определить разрядность операционной системы Windows при программированиии на языке Delphi. Это нужно для того, чтобы например выбрать ту или иную версию драйвера - x86 (32 разрядная) или x64 (64 разрядная).

И так, приступим.

Создаем новый проект, кидаем на форму компонент Label (текстовая надпись).

Затем переходим в редактор исходного кода и в разделе с переменными var добавляем строковую переменную razr (тип данных string, т.е строка).

var Form1: TForm1;

razr: string;

После этого два раза нажимаем на форму, копируем и вставляем в нее следующий код (в процедуре создания главной формы TForm1.FormCreate), между фразами begin и end; (то есть началом и концом процедуры).

{с помощью функции Get Enviroment Variable считываем знаение переменной ProgramFiles(X86)

если система 32 разрядная, то она будет иметь пустое значение

если 64 разрядная, то она будет иметь знаение C:Program Files(x86)

т.е папка, в которую устанавливаются 32 разрядные версии программ}

razr:= GetEnvironmentVariable("ProgramFiles(x86)");

label1.Caption:= razr;

if (razr = "") then

begin

label1.Font.Color:=clRed; { Меняет цвет надписи, вы можете выбрать любой на ваш вкус, например clGreen - зеленый}

label1.Caption:= "У вас x86"; {вместо имени метки labl1 вы можете написать любое другое, например metka}

else

begin

label1.Font.Color:=clBlue; { Меняет цвет надписи, вы можете выбрать любой на ваш вкус, например clGreen - зеленый}

label1.Caption:= "У вас x64";

end;

Как же работает программа?

C помощью функции Get Enviroment Variable происходит считывание значения переменной окружения в Windows ProgramFiles(X86).

Если система 32 разрядная, то она будет иметь пустое значение.

Если 64 разрядная, то она будет иметь знаение C:Program Files(x86) т.е это папка, в которую устанавливаются 32 разрядные версии программ.

Собственно на этом всё.

Вот, что получилось у меня.

Ниже вы можете скачать архив с исходником программы, чтобы попробовать самостоятельно разобраться в ее работе.


Комментарии ()

wdfm 90

На Windows 7 x64 программа работает отлично, можно пользоваться

Edward 300

Все кто будет разводить офф топик + нецензурную брань, я буду давать бан на 1 день! Это не касается администраторов.
.php?board=18.0

Форум не за просто так я делал!

Edward 300

С Delphi обычно ассоциируется среда разработки приложений на основе языка Object Pascal, разработанного фирмой Borland. Этот язык является наследником Turbo Pascal с объектно-ориентированными расширениями, который в свою очередь ведет свою историю от «чистого» Pascal, созданного Никлаусом Виртом в 1970 году.

Впоследствии, в 2002 году, разработчики из компании Borland официально поставили знак равенства между языками Delphi и Object Pascal.

Предыстория

Изначальный Pascal, по мнению его разработчиков, имел самый быстрый компилятор в мире. Более того, вместе с ним была впервые разработана технология создания платформенно-независимых программ, которая нашла широкое применение в таком языке, как Java.

Однако его IDE, если это понятие можно применить к среде разработки того времени, функционировала только на базе операционной системы DOS.

С появлением Windows возникла необходимость в создании среды разработки ПО для этой платформы. Наиболее популярным решением для персональных Windows-компьютеров в 80-е - начале 90 годов стал компилятор и IDE Turbo Pascal фирмы Borland. Встроенный компилятор обеспечивал высокую скорость компиляции и высокое качество кода (отсюда приставка Turbo). Среда Turbo Pascal обеспечивала также отладку кода, содержала богатый набор примеров. Все эти качества на какое-то время позволили Turbo Pascal стать стандартом языка Pascal.

Вызов времени

В Windows довольно быстро начал развиваться графический интерфейс, а в IDE Turbo Pascal по-прежнему использовался DOS-подобный интерфейс. Постепенно в Microsoft поняли, что нужно двигаться в сторону «визуализации» программирования.

Чтобы создать простую программу, разработчикам приходилось писать по несколько страниц кода: прописывать объемные блоки кода для меню и окон, шрифтов, очищать память, «рисовать» кнопки и т.д. Однако преимущества графического интерфейса Windows были довольно сильны, поэтому нужно было поддержать развитие операционной системы. В Microsoft понимали, что необходимо как-то облегчить жизнь разработчиков. Поэтому в 90-х годах компания запустила несколько параллельных проектов по созданию нового языка программирования и среды разработки для Windows. Первой ласточкой стал Visual Basic.

Перспективы языка Pascal в этом отношении оказались далеко не радужными. К середине 90-х годов он уже находился в довольно запущенном состоянии. Компания Borland начала дорабатывать его, но вскоре стало понятно: изменения и добавления будут настолько серьезными, что результат этой работы можно считать новым языком программирования. Для нового языка была разработана IDE с графическим интерфейсом. Новая среда программирования и язык получили общее название Delphi.

Своё имя новая система (Delphi) получила в честь древнегреческого города Дельфы. Название было выбрано неспроста: город Дельфы связан с именем бога мудрости и покровителем искусств Аполлона. Согласно легенде главное святилище Аполлона находилось именно в этом городе. Его жрицы-сивиллы изрекали пророчества желающим узнать свою судьбу.

«Имя Delphi было предложено Денни Торпом во время мозгового штурма. Мы хотели, чтобы в имени системы отразились уникальные способности продукта к работе с базами данных, и Delphi как нельзя лучше перекликается с таким заслуженным именем в этой области, как Oracle, по крайней мере для тех, кому сочетание «Дельфийский Оракул» о чем-то говорит», рассказывал руководитель исследовательской группы по разработке системы Delphi Чак Язджевски.

В России Borland Delphi появился в конце 1993 года и сразу же завоевал большую популярность.

Основные версии

Версия 1 была предназначена для разработки под 16-разрядную платформу Win16. Начиная со второй версии, была реализована возможность компиляции программы под 32-разрядную платформу Win32.


Delphi 1

В версии 3 появилась поддержка многозвенной технологии (multi-tiered) доступа к данным, что позволило создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.


Delphi 3

Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux.

Версия 8 способна генерировать байт-код исключительно для платформы.NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы.NET). Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) позволили создавать как приложения Win32, так и.NET-приложения.

В Delphi 2006, появилась возможность писать приложения для.NET используя стандартную библиотеку классов.NET, VCL для.NET. Среда также позволила писать.NET-приложения на C# и Win32-приложения на C++. В Delphi 2006 также была реализована технология MDA (Model Driven Architecture) с помощью ECO (Enterprise Core Objects) версии 3.0.

За что боролись

Процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Достаточно просто перетащить нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки.

Разработчик получил в распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом.

Стало возможным создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP.

Появилась возможность создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO.

В Delphi разработчикам дали возможность создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать шаблоны проектов и мастеров, генерирующих заготовки проектов. Более того, авторы предоставили разработчику интерфейс для связи других приложений (или внешних программ) с Delphi IDE.

Перемены

Новая версия Delphi выходила каждый год, но после пятой как будто что-то произошло… Позже выяснилось, что параллельно с работой над новой версией Delphi велась разработка Delphi-подобного языка программирования для Linux. Новый продукт получил название Kylix. Delphi оказал огромное влияние на создание концепции языка C# для платформы.NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Delphi, из компании Borland Ltd. в Microsoft Corp.

В марте 2006 года компания Borland приняла решение о прекращении дальнейшего развития интегрированных сред разработки JBuilder, Delphi и C++Builder по причине убыточности этого направления. Была запланирована продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор. Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса.

После этого разработкой IDE-продуктов стала заниматься новая компания - CodeGear, которая была финансово полностью подконтрольна Borland.

В марте 2007 года CodeGear порадовала пользователей обновлённой линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. В этой версии появилось множество нововведений на уровне языка:

По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL;
Замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).
Обобщённые типы, они же generics.
Анонимные методы.
Новая директива компилятора $POINTERMATH .
Функция Exit теперь может принимать параметры в соответствии с типом функции.

В версии Delphi XE2 (2011 год) был добавлен компилятор Win64 и кросс-компиляция для операционных систем фирмы Apple (MacOS X, iOS).

Про следующую версию в своем интервью рассказывал Всеволод Леонов, российский евангелист Delphi из компании Embarcadero Technologies:


Продукт Delphi XE3 является продолжением нового поколения средств быстрой разработки семейства Delphi. Напомню, в 2011 году вышла Delphi XE2 с платформой FireMonkey, которая является альтернативой библиотеки визуальных компонентов VCL.

Она очень похожа на VCL по методам использования и составу компонентов (кнопки, метки, поля ввода, меню и т.д.), но обладает способностью быть перенесенной на другую операционную систему. FireMonkey - кроссплатформенная. Приложения, созданные с помощью FireMonkey, могут компилироваться и под Windows, и под Mac OS. Практически в один-два «клика» мы можем пересобрать проект под принципиально другую операционную систему. Практически все демонстрационные проекты, поставляемые с Delphi на платформе FireMonkey, имеют две версии: одну под Windows, другую - под Mac OS. И для этого не нужно вносить изменения в исходный код приложения

Вышедшая в 2013 году версия Delphi XE5 обеспечила кросс-компиляцию приложений для устройств на платформе ARM/Android.

В апреле 2016 года появилась Delphi 10.1 berlin. Нововведения:

  • Компилятор и набор инструментов Object Pascal для 64-разрядной iOS;
  • Поддержка универсальных приложений iOS (включение 32- и 64-разрядных двоичных файлов в пакет приложения);
  • Предпросмотр FireUI на мобильных платформах;
  • Предпросмотр на разных устройствах;
  • Расширенные возможности работы со стилями в дизайнере единого интерфейса, в том числе универсальные стили и настройка стилей Windows;
  • Диспетчер устройств FireUI позволяет изменять спецификации доступных устройств и добавлять новые устройства;
  • Элементы управления Memo, ListView, Calendar, Switch для платформы iOS;
  • Компонент MapView для мобильных платформ (iOS и Android), поддерживающий специализированные библиотеки интерактивных карт для каждой платформы (разработанные соответственно Apple и Google).

Ни жив, ни мертв

Известно, что Delphi перманентно «хоронят» или заявляют, что так жить нельзя. Они аргументируют тем, что система стала монструозной, неактуальной, неподдерживаемой, неудобной, какой-то еще…

Но можно вспомнить, что такое мнение чаще встречается в США и Западной Европе, где этот язык бешеной популярности и не имел никогда. Там эти соображения могут быть вполне резонными во многих случаях. Но есть и другие страны, где ситуация может отличаться - страны СНГ и остальные страны Восточной Европы.

С этим согласен Всеволод Леонов:

Небольшой исторический экскурс по поводу стран Восточной Европы. Система образования бывшего СССР была очень сильна во многих аспектах, но не по части прикладного программирования. В начале 90-х как получить доступ к компьютеру, так и научиться что-то делать в современных средах разработки могли лишь те, кто имел определенную специальность.

Целые факультеты «пролетали мимо» фундаментальных курсов по программированию. И наличие Turbo Pascal с низким порогом вхождения, а затем среды Delphi, позволяющей заняться самообразованием в хорошем смысле этого слова, смогли насытить ИТ-отрасль достаточно грамотными разработчиками, а также повысить общенациональный инженерный уровень создания прикладного ПО.

Таким образом, для стран бывшего соцлагеря связка Pascal/Delphi резко выдернула экономику из ИТ-небытия за счет очень простого языка программирования и среды визуальной разработки на основе готовых компонентов.

Новый герой из open source

Наиболее известной свободной реализаций языка Pascal является Free Pascal. Помимо открытости исходного кода, его основным преимуществом является мультиплатформенность, а также поддержка различных диалектов.

На основе FreePascal создана свободная мультиплатформенная IDE Lazarus , позволяющая работать с проектами Delphi. Она основана на библиотеке визуальных компонентов Lazarus Component Library (LCL).

Список заявленных поддерживаемых платформ:

Windows: 98, 2k, XP, Vista, 7, 32 и 64bit;
FreeBSD/Linux: gtk 2.8 и qt4.5, 32 и 64bit;
Mac OS X: 10.4, LCL только 32bit, не-LCL могут быть 64bit.

С другой стороны, среда Delphi по мере развития действительно становилась все более громоздкой и малопригодной для обучения программированию. Кроме того, отсутствует бесплатная версия Delphi даже для академического использования. Данные факторы привели к практически полному исчезновению Delphi из сферы образования.

Введение

Настоящие указания составлены с целью оказания помощи студентам для получения ими практических навыков по технологии визуального проектирования собственных приложений под Windows в среде Delphi с использованием методологии объектно-ориентированного программирования. Лабораторные работы охватывают основные этапы разработки программ под Windows.

Методические указания состоят из трех разделов. В первом разделе приводится описание основных понятий визуального проектирования приложений и среды программирования Delphi.Во втором разделе сформулированы общие требования по выполнению и оформлению результатов лабораторных работ. Третий раздел состоит из описаний конкретных лабораторных работ с необходимыми краткими теоретическими сведениями, примерами составления программ, рекомендациями по выполнению работ, вариантами заданий на выполнение работ и вопросами для самопроверки. Для выполнения работы студенты должны ознакомиться с языком Object Pascal и средой визуального программирования Delphi .

Основные понятия и определения Delphi

delphi программный массив визуальный

Экран после запуска Delphi содержит четыре окна: главное, формы, инспектора объектов и редактора кода, которое почти полностью закрыто окном формы.

В главном окне находиться меню команд Delphi, панель инструментов и палитра компонентов.

Окно формы, его заголовок FORM1 представляет собой заготовку, макет одного из объектов разрабатываемого приложения.

Окно инспектора объектов, его заголовок Object Inspector позволяет видеть и менять свойства объектов проекта. После запуска Delphi в этом окне отображаются свойства формы FORM1.

Окно редактора кода предназначено для создания процедур обработки событий. В Delphi кодом называется текст программы.

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

Свойствами объекта являются, например, размер текста заголовка, цвет фона формы или текст на командной кнопке и многое другое, полный перечень свойств можно увидеть в окне Object Inspector для выделенного объекта.

Событие - это то, что происходит во время работы созданного Вами приложения. В Delphi у каждого события есть имя, например, щелчок кнопкой мыши это событие OnClick, двойной щелчок - событие OnDblClick .

Проект - это набор файлов (программных единиц - модулей), используя которые компилятор создает файл исполняемой программы. Один из файлов проекта, который называется файлом проекта и имеет расширение dpr, содержит общее описание проекта. Файл проекта является главным модулем приложения, который формируется Delphi. Помимо главного модуля, проект включает в себя один или более модулей (Unit) . Файлы модулей проекта(Unit) содержат тексты процедур, функций, описание типов, а также всю информацию для создания исполняемой программы, и имеют расширение pas. Процедура - эта группа операторов в языке программирования, позволяющая выполнить конкретные действия (решить задачу). Так или иначе, весь составленный инициализации Вами исполняемый код обязательно помещается в какую-нибудь процедуру.

Модуль (Unit) состоит из трех разделов: интерфейса (начинается со слова interface), реализации(начинается со слова implementetion) и. Ниже приводится структура модуля.

unit ИмяМодуля;

{ Здесь находятся описание процедур и функций этого модуля, которые могут использоваться другими модулями}

{Здесь находятся объявления глобальных констант модуля, которые могут использоваться процедурами и функциями модуля}

{Здесь находятся объявления глобальных типов модуля, которые могут использоваться процедурами и функциями модуля}

{Здесь находятся объявления глобальных переменных модуля, которые могут использоваться процедурами и функциями модуля}

{Здесь находятся описание процедур и функций модуля}

{Здесь находятся инструкции раздела инициализации переменных модуля}

Таким образом, раздел интерфейса сообщает компилятору, какая часть модуля является доступной для других модулей программы. Раздел реализации начинается директивой {$R*.DFM}, указывающей компилятору, что в процессе генерации выполняемого файла надо использовать описание формы. описание формы находится в файле с расширением dfm, имя которого совпадает с именем модуля. За директивой {$R*.DFM} следуют процедуры обработки событий для формы и ее компонентов. Сюда же программист может поместить разработанные процедуры и функции. Если раздел инициализации не содержит инструкций, то слово begin не указывается.