Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
3-78857
Andrey000
2003-11-03 11:56
2003.11.24
Помогите с ADO не освобождается память


7-79191
bon
2003-09-15 14:06
2003.11.24
Пользователь


3-78761
Aleksandr
2003-11-03 11:59
2003.11.24
Как бороться с открытой сессией Парадокса?


6-79078
dez
2003-09-26 12:26
2003.11.24
TNMHTTP + Proxy + Авторизация


6-79074
oduvan
2003-09-26 17:02
2003.11.24
Помогите с UDP (indy)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский