Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

Статья: Типизированные файлы на delphikingdom   Найти похожие ветки 

 
Zheks ©   (2003-11-13 11:27) [0]

Моё почтение! Помогите пожалуйста разобраться.
В статье( http://www.delphikingdom.com/lyceum/seminar.asp?partID=4&LessonID=14) всё понятно, вот только не ясно, как это собрать, что бы работало.


 
Anatoly Podgoretsky ©   (2003-11-13 11:36) [1]

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

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

ЗЫ: если вопросов много,то задавай их в отдельных ветках.


 
Zheks ©   (2003-11-13 11:48) [2]

Попробую конкретизировать:
//------------------------
var
FileVar: file of тип;
//------------------------
type
TPhoneRec = packed record
PersonName: string[25];
Address: string[25];
Phone: string[16];
end;
//------------------------
// опредение глобальных для модуля или программы переменных
{.......}
//------------------------
program ReadPhoneBook;
{.......}
uses PhoneDb; //-- и всё?
//------------------------

1) Получилось четыре части которые нужно собрать(Ещё и в консольное приложение)
2) uses PhoneDb; ???

Извените, не понимаю. Можно, в двух словах, разложить это всё по полочкам?


 
T   (2003-11-13 12:02) [3]

Верняя часть, вероятно, и есть модуль PhoneDB,
только заголовка
unit PhoneDB;
не хватает.

uses PhoneDb;
// подключить к (использовать в) программе модуль PhoneDB

В чем вопрос-то?


 
Anatoly Podgoretsky ©   (2003-11-13 12:09) [4]

Не обязательно, это все можно и в .dpr файле, но желательно, что бы программист, хоть что то знал о структуре модулей, что в каком порядке объявляется.
Если начальных знаний по программированию нет, то может ну его нафиг?

А вопроса действительно не видно.


 
TUser ©   (2003-11-13 12:22) [5]

Если врубится в это дело совсем туго - лучше поковыряй какой-нибудь экзампл.


 
Zheks ©   (2003-11-13 12:24) [6]

Я разбил эти три части на две, в первую вошли первые три(PhonDb.pas)? а во вторую третья (Project1.dpr), не фурычит.

Вопрос: Где я ошибся?


 
Anatoly Podgoretsky ©   (2003-11-13 12:30) [7]

В одной из трех.


 
Zheks ©   (2003-11-13 12:41) [8]

2 Anatoly Podgoretsky © (13.11.03 12:30) [7]
всё в один проэкт вбил, вот чё получилось:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
TPhoneRec = packed record
PersonName: string[25];
Address: string[25];
Phone: string[16];
end;
// опредение глобальных для модуля или программы переменных
var
PersonFile: file of TPhoneRec; // определили файл нашего типа
DbOpen: Boolean; // флаг состояния базы
PhonesCount: Integer; // количество записей в базе

//uses
// PhoneDb;
var
I: Integer;
PhoneEntry: TPhoneRec; // отдельная запись
PhoneBook: array of TPhoneRec; // телефонный справояник
// открытие базы и нициализация
// не пытаться работать с базой если результат = FALSE
function OpenDB(const DbName: string): Boolean;
begin
AssignFile(PersonFile, DbName);
try
Reset(PersonFile); // открываем базу
PhonesCount := FileSize(PersonFile); // текущее кол. записей
DbOpen := TRUE; // открытие прошло нормально
except
PhonesCount := 0;
DbOpen := FALSE;
end;
Result := DbOpen;
end;

// создание новой базы и инициализация
// не пытаться работать с базой если результат = FALSE
function CreateDB(const DbName: string): Boolean;
begin
AssignFile(PersonFile, DbName);
try
Rewrite(PersonFile); // открываем базу
DbOpen := TRUE; // открытие прошло нормально
except
DbOpen := FALSE;
end;
PhonesCount := 0; // записей нет
Result := DbOpen;
end;

// закрытие базы
procedure CloseDB;
begin
if DbOpen
then
CloseFile(PersonFile);
end;

// Удалить все после указанной записи
procedure TruncateDB(const RecNo: Integer);
begin
Seek(PersonFile, RecNo);
Truncate(PersonFile);
end;

// Читать следующую запись
function ReadNextRec: TPhoneRec;
begin
Read(PersonFile, Result);
end;

// Читать указанную запись
function ReadRec(const RecNo: Integer): TPhoneRec;
begin
Seek(PersonFile, RecNo);
Result := ReadNextRec;
end;

// изменить текущую запись
procedure ModifyNextRec(const Rec: TPhoneRec);
begin
Write(PersonFile, Rec);
end;

// изменить указанную запись
procedure ModifyRec(const RecNo: Integer; const Rec: TPhoneRec);
begin
Seek(PersonFile, RecNo);
ModifyNextRec(Rec);
end;

// Добавить новую запись в конец файла
procedure AddRec(const Rec: TPhoneRec);
begin
Seek(PersonFile, PhonesCount); // переместиться на последнею запись
ModifyNextRec(Rec); // и добавить запись
PhonesCount := FileSize(PersonFile); // новое кол. записей
end;
if not CreateDB("C:\DB\Phones.dbf") then Exit; ошибка!
WriteLn("Created C:\DB\Phones.dbf");
for I := 0 to 3 do
begin
PhoneEntry.PersonName := "PersonName " + IntToStr(I);
PhoneEntry.Address := "Address " + IntToStr(I);
PhoneEntry.Phone := "(012) 3456789-" + IntToStr(I);
AddRec(PhoneEntry);
WriteLn(PhoneEntry.PersonName," ",
PhoneEntry.Address," " ,
PhoneEntry.Phone);
end;
CloseDB;

WriteLn("Check database");
if OpenDB("C:\DB\Phones.dbf")
then
begin
SetLength(PhoneBook, PhonesCount);
for I := 0 to PhonesCount - 1 do
begin
PhoneBook[I] := ReadNextRec;
WriteLn(PhoneBook[I].PersonName," ",
PhoneBook[I].Address," " ,
PhoneBook[I].Phone);
end;
end;
WriteLn("Press ENTER to exit");
ReadLn;
end.


 
Zheks ©   (2003-11-13 12:44) [9]

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


 
Zheks ©   (2003-11-13 12:47) [10]

Заработало!!!
Прошу меня извенить... Всё заработало!!!

Спасибо за внимание.


 
Anatoly Podgoretsky ©   (2003-11-13 12:51) [11]

Вопроса опять не видно.



Страницы: 1 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
1-78886
Sewer
2003-11-13 11:49
2003.11.24
Запуск программы из другого приложения


14-79157
alxx
2003-10-31 11:04
2003.11.24
Быстрая графика в Delphi


8-79058
ildar
2003-07-22 09:40
2003.11.24
вхождение одного звукового фрагмента в другой


3-78825
VP
2003-11-04 17:23
2003.11.24
Quick Report Pro


3-78791
berserk
2003-11-05 10:36
2003.11.24
Новая база