Листинги рабочих примеров


Все приведенные листинги примеров были подготовлены в интегрированной среде разработки Borland Delphi 7.0 и являются функционально завершенными элементами программного обеспечения. Примеры представлены программными модулями и консольными приложениями. Без существенных изменений они могут быть использованы в разработке собственного прикладного программного обеспечения.

Создание и управление списковыми объектами

Модуль демонстрирует приемы работы со списковым классом, прототипами функций и динамической памятью.

 

unit common;

 

Interface

 

uses Classes, SysUtils;

 

Type

{ Прототип функции сравнения }

TCompareFunc = function(aData1, aData2: Pointer): Integer;

{ Прототип процедуры сортировки }

TSortProc = procedure(aList: TList;

aFirst, aLast: Integer; aCompare: TCompareFunc);

 

function CompareLongWord(aData1, aData2: Pointer): Integer;

procedure InitList(Count: LongWord);

procedure DisposeList;

procedure PrintList;

procedure PrintItem(Index: LongWord);

procedure SaveList(FileName: string);

function OpenList(FileName: string; var Size: LongWord): Boolean;

 

var List: TList;

 

 

Implementation

 

{ Функция сравнения двух целых чисел, заданных своими указателями }

function CompareLongWord(aData1, aData2: Pointer): Integer;

Begin

{ Значение первого элемента меньше значения второго }

if LongWord(aData1^) < LongWord(aData2^) then

Result:=-1 else

{ Значения элементов равны }

if LongWord(aData1^) = LongWord(aData2^) then

Result:=0 else

{ Значение первого элемента больше значения второго }

Result:=1;

end;

 

{ Инициализация массива случайными числами }

procedure InitList(Count: LongWord);

Var

pw: ^LongWord;

i: LongWord;

Begin

Randomize;

for i:=0 to Count-1 do

Begin

New(pw);

pw^:=Random(1000);

List.Add(pw);

end;

end;

 

{ Вывод содержимого массива }

procedure PrintList;

var i: Integer;

Begin

if List.Count > 0 then

for i:=0 to List.Count-1 do

WriteLn(IntToStr(i)+': '+IntToStr(LongWord(List.Items[i]^)));

end;

 

{ Вывод значения одного элемента массива, заданного своим порядковым номером }

procedure PrintItem(Index: LongWord);

Begin

if List.Count > 0 then

WriteLn(IntToStr(Index)+': '+IntToStr(LongWord(List.Items[Index]^)));

end;

 

{ Освобождение всех элементов массива и самого массива }

procedure DisposeList;

Var

pw: ^LongWord;

i: LongWord;

Begin

if List.Count > 0 then

Try

{ Освобождение памяти, на

которую указывают элементы массива }

for i:=0 to List.Count-1 do

Begin

pw:=List.Items[i];

Dispose(pw);

end;

Finally

{ Удаление объекта массива }

List.Free;

end;

end;

 

{ Сохранение содержимого массива в текстовом файле }

procedure SaveList(FileName: string);

Var

TF: TextFile;

i: LongWord;

Begin

AssignFile(TF, FileName);

Try

ReWrite(TF);

for i:=0 to List.Count-1 do

Writeln(TF, LongWord(List.Items[i]^));

Finally

CloseFile(TF);

end;

end;

 

{ Чтение содержимого выборки из текстового файла и инициализация массива }

function OpenList(FileName: string; var Size: LongWord): Boolean;

Var

TF: TextFile;

pw: ^LongWord;

Begin

Size:=0;

Result:=True;

Try

AssignFile(TF, FileName);

Try

Reset(TF);

Repeat

New(pw);

Readln(TF, pw^);

List.Add(pw);

until Eof(TF);

Finally

CloseFile(TF);

Size:=List.Count;

end;

Except

Result:=False;

end;

end;

 

Initialization

List:=TList.Create;

 

Finalization

DisposeList;

 

end.



Дата добавления: 2021-12-14; просмотров: 332;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.013 сек.