Uses sysutils в паскале что это
Перейти к содержимому

Uses sysutils в паскале что это

  • автор:

Модуль SysUtils

Модуль SysUtils содержит большое количество вспомогательных подпрограмм таких как, например, подпрограмм преобразования типов (см. Лабораторную работу №2). Ввиду частого применения подпрограмм из этого модуля, модуль SysUtils автоматически добавляется в шаблон приложения. Некоторые из функций этого модуля были рассмотрены ранее, другие функции будут рассматриваться в следующих лабораторных работах. Кроме модуля SysUtils часто используются еще два модуля. Это модули Windows и Messages которые обеспечивают вызов функций Windows API из программ Object Pascal.

Задания к лабораторной работе

1. Перепишите задание 3 из лабораторной работы №7 с использованием модуля. 2. Создайте модуль для работы с массивами. В состав модуля должны войти подпрограммы для ввода и вывода массивов, вставки и удаления элементов, несколько видов сортировки. Напишите тестовый проект для демонстрации возможностей модуля. 3. Перепишите программу из листинга 7 лабораторной работы №6 с использованием модуля. Интерфейсная часть модуля должна быть идентична модулю созданному в первом задании.

Программирование на языке паскаль

В модуле SysUtils определены функционально такие же операции, что и в модуле System, но с большими возможностями. Поддерживаются:

  • Имена файлов напрямую.
  • Атрибуты файлов.
  • Выбор режима работы с файлами.

Атрибуты файлов

Атрибут Значение
faReadOnly Только для чтения
faHidden Скрытый
faSysFile Системный
faVolumeID Метка диска
faDirectory Каталог
faArchive Архивный
faAnyFile Любой

Атрибуты можно объединять с помощью операции or: faHidden or faSysFile.

Режимы файлов

Режим Значение
Флаги открытия
fmCreate Файл создается
fmOpenRead Только для чтения
fmOpenWrite Только для записи
fmOpenReadWrite Для чтения и записи
Флаги совместного использования файла
fmShareExclusive Запретить другим доступ
fmShareDenyWrite Запретить другим запись
fmShareDenyRead Запретить другим чтение из файла
fmShareDenyNone Разрешить другим все

Установочные и завершающие операции

Операция Содержание
FileExists(FileName) Функция. Проверяет существование файла с именем FileName. Возвращает True, если файл существует, и False в противном случае.
FileCreate(FileName); Функция. Создает файл с именем FileName. Возвращает дескриптор файла. При ошибке возвращается -1.
Дескриптор файла – это целое число, с которым ИСР связывает файл.
FileGetAttr(FileName); Функция. Для файла с именем FileName возвращает атрибут Attr.

При ошибке возвращается -1.

При ошибке возвращается -1.

Операции перемещения по файлу

Операция Содержание
FileSeek(Handle, Offset, Origin);
File – файл,
Seek – поиск,
Handle – дескриптор,
Offset – смещение,
Origin – начало.
Функция. В файле, связанном с дескриптором Handle, смещает маркер на Offset относительно позиции Origin (для Origin возможны: 0 – начало файла, 1 – текущая позиция, 2 – конец файла).

Возвращает новую позицию маркера от начала файла. При ошибке возвращается -1.

Операции ввода/вывода

Операция Содержание
FileRead(Handle, Buffer, Count);
File – файл,
Read – читать,
Handle – дескриптор,
Buffer – буфер,
Count – счетчик.
Функция. Читает из файла, связанного с дескриптором Handle, в буфер Buffer Count байт. Возвращает число фактически считанных байтов. При ошибке возвращается -1.
FileWrite(Handle, Buffer, Count);
File – файл,
Write – писать,
Handle – дескриптор,
Buffer – буфер,
Count – счетчик.
Функция. Пишет в файл, связанный с дескриптором Handle, из буфера Buffer Count байт. Возвращает число фактически записанных байтов. При ошибке возвращается -1.

Специальные операции

Операция Содержание
DiskFree(Drive);
Disk – диск,
Free – свободно,
Drive – дисковод.
Функция. Возвращает размер свободного места на диске Drive в байтах. При ошибке возвращается -1.
DiskSize(Drive);
Disk – диск,
Size – размер,
Drive – дисковод.
Функция. Возвращает размер диска Drive в байтах. При ошибке возвращается -1.

Работа с файлами средствами SysUtils

Пример . Программа выполняет действия:

  • Создает в массиве Count случайных чисел.
  • Переносит их в файл c именем MyFile.
  • Обнуляет массив.
  • Возвращает в него Count = 5 чисел из файла.

uses SysUtils, RusTrans; // Ссылка на модули

const Count=6; // Константа Count

hMyFile:integer; // Дескриптор файла

Buffer:Array[1..Count] of byte; // Буфер

hMyFile:=FileCreate(‘MyFile’); // Создать файл

writeln(‘Buffer=’); // Вывести Buffer= на дисплей

for i:=1 to Count do // Заполнить буфер в цикле

Buffer[i]:= Random(100); // Случайное число => в буфер

writeln(‘ ‘, Buffer[i]); // Вывод его на дисплей

Fact:=FileWrite(hMyFile,Buffer,Count);// Запись буфера в файл

writeln(‘Fact=’,Fact); // В файл выведено Fact чисел

readln; // Пауза, чтобы увидеть Fact

writeln(‘Buffer=’); // Вывести Buffer= на дисплей

for i:=1 to Count do // Обнулить буфер в цикле

Buffer[i]:=0; // Обнулить компонент буфера

writeln(‘ ‘,Buffer[i]); // Вывод его на дисплей

readln; // Пауза, чтобы увидеть результат

FileSeek(hMyFile,0,0); // Маркер на начало файла

Fact:=FileRead(hMyFile,Buffer,Count-2);// Чтение из файла в буфер

writeln(‘Buffer=’); // Заголовок на дисплей

for i:=1 to Count do // Буфер на дисплей

writeln(‘Fact=’,Fact); // Из файла считано Fact чисел

FileClose(hMyFile); // Закрыть файл

readln; // Пауза, чтобы увидеть результат

Как подключить SysUtils

Я нашёл на этом форуме программу https://www.cyberforum.ru/pasc. 93376.html но не понимаю как в паскал подключить uses SysUtils; ведь это началось только в дельфи.
Короче кто знает как запустить эту прогу.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

USES SysUtils и ошибка Syntax Error, «BEGIN» expected but «identifier SYSUTILS»
Подключаю SysUtils дабы использовать ф-ции StrToInt и IntToStr, но выдает ошибку Fatal: Syntax.

DirectoryExists и SysUtils
Если пишу просто DirectoryExists Берлин ругается, что depreceted используйте.

Модуль SysUtils
За что отвечает этот модуль? Заранее большое спасибо!

sysutils.Date ошибка
form_prihod_prod.DateTimePicker1.Date:=sysutils.Date; ругается на sysutils.date Делаю все по.

Регистрация: 17.10.2008
Сообщений: 97
Удали Uses SysUtils и в путь. Об ошибках сообщи, поправим
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181

neon902, Так там товарищ и писал программу в консоли Делфи. В Паскале этот модуль подключать не нужно, модуль System подключен автоматически.

Регистрация: 01.07.2010
Сообщений: 62

Puporev, а как зайти в консольное меню дельфи? У меня стоит Delphi 7

Добавлено через 11 минут
С этим разобрался)

Регистрация: 01.07.2010
Сообщений: 62
Но тут какая-то ошибка, вот скрин
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181

neon902, Если код копировали, то те строки, на которые показывает ошибки, перебейте с клавиатуры, Делфи иногда не понимает при копировании с сайта кодировку

Регистрация: 01.07.2010
Сообщений: 62
Пробовал, не помогло.
Он ругается так на все выводы на экран, может нужно ещё что-то подлючить?
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
А Вы случайно не удалили первые 2 строки в окне кода?

1 2 3 4 5
program Project2; uses SysUtils;

Добавлено через 1 минуту
Просто я скопировал и у меня никаких ошибок нет.
еще перед
end.
напишите readln

Регистрация: 01.07.2010
Сообщений: 62
Ааааа точно удалил нечайно
Работает, огромное спасибо, Puporev.
Регистрация: 14.10.2013
Сообщений: 67

А что эти строки вообще означают? И что это за модуль SysUtils?

1 2 3 4 5
program Project2; uses SysUtils;

Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181

Лучший ответ

Сообщение было отмечено Памирыч как решение

Решение

При запуске нового консольного приложения этот текст

1 2 3 4 5 6 7 8 9 10
program Project2; uses SysUtils; begin end.

Формируется по умолчанию.

— < >— признак комментария, но $ — признак ДИРЕКТИВЫ компилятору. Именно она говорит, что приложение будет консольным.
uses SysUtils; — из стандартного модуля (библиотеки) SysUtils будут использоваться подпрограммы. Если интересно — уберите строку. Тогда увидите при работе, какие именно подпрограммы (возможно, что никакие — заявлено автоматически, про запас).
< TODO -oUser -cConsole Main : Insert code here >— это комментарий: вставьте сюда Ваш код, т е текст программы.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Ошибка модуля SysUtils
Как только прописываю в uses SysUtils показывает ошибку Unit1.pas(8): E2004 Identifier.

Format Функция модуля SysUtils
не могу сообразить как использовать в этой функции переменные кроме как массив больше ничего не.

Вопрос по функциям модуля SysUtils
Привет всем. Есть у меня такая заморочка, решил получше разобраться в подключаемых модулях и начал.

Error 15: file not found
program Project1; uses SysUtils; var a,b,x,y:Integer; begin Write(‘Vvedite X=’); .

10.7 Использование

После того, как хелпер класса определен, его методы могут быть использованы всякий раз, когда хелпер класса находится в области видимости. Это означает, что, если он определен в отдельном модуле, то этот модуль должен находиться в пункте uses везде, где используются методы хелпера класса.

Рассмотрим следующий модуль:

TObjectHelper = class helper for TObject

function AsString ( const aFormat : String ): String ;

function TObjectHelper . AsString ( const aFormat : String ): String ;

Result := Format ( aFormat , [ ToString ]);

Тогда будет скомпилирован следующий код:

O := TObject . Create ;

Writeln ( O . AsString ( ‘Объект «O» в виде строки : %s’ ));

Но, если создан второй модуль ( ohb ) :

TAObjectHelper = class helper for TObject

function MemoryLocation : String ;

function TAObjectHelper . MemoryLocation : String ;

Result := format ( ‘%p’ ,[ pointer ( Self )]);

И он добавлен после первого модуля в пункте uses :

O := TObject . Create ;

Writeln ( O . AsString ( ‘Объект «O» в виде строки : %s’ ));

Writeln ( O . MemoryLocation );

Тогда компилятор будет жаловаться, что он не знает метод ‘AsString’ . Это происходит потому, что компилятор перестает искать хелпер класса, как только встречает первый хелпер класса. Так как модуль ohb расположен последним в пункте uses, компилятор будет использовать только TAObjectHelper как хелпер класса.

Решение состоит в том, чтобы повторно реализовать модуль ohb :

TAObjectHelper = class helper ( TObjectHelper ) for TObject

function MemoryLocation : String ;

function TAObjectHelper . MemoryLocation : String ;

Result := format ( ‘%p’ ,[ pointer ( Self )]);

А после замены модуля ohb на ohc , пример будет компилироваться и работать, как ожидалось.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *