Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизСтатья: Типизированные файлы на 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c