Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Таблица из текстового файла [D7]


Страницы:   1 2 3 4

Xmen ©   (2008-11-28 16:01:00) 

Привет мастерам!
У меня такой случае. Нужно использовать текстовый файл как базу, то есть в программе нужно использовать справочники с элементами таблицы. Записи обычно 20 - 25 шт, иногда нужно их освежить (удалить, редактировать, добавить). Для этого я бы не хотел использовать какое то СУБД, а воспользоваться простым текстовым файлом. В каком направление посоветуете мне работать.


MsGuns   (2008-12-01 14:47:00) [41]

И еще.
Для платежей одной таблицы (файла) явно недостаточно. Надо еще как минимум 3 справочника: банков, контрагентов и видов платежей. Да и выписки тоже по-хорошему надо хранить - а это еще одна таблица.


MsGuns   (2008-12-01 14:44:00) [42]

Можно использовать в качестве хранилища простейшей базы данных текстовый файл, но это имеет много минусов
1) Файл никак не защищен от случайного илии намеренного изменения без Вашей программы
2) Файл не может быть использован как многопользовательский (два одновременно работающих ПК - это уже многопользовалельский режим)
3) Файл будет "тормозить" при загрузке и сохранении
4) Файл не может хранить данные о нескольких разных объектах либо это будет "сложный" файл и методы работы с ним также будут сложными
5) Файл исключает возможность частичной выборки, его надо будет постоянно загружать полностью. Иначе-см. 4) со всеми неприятными последствиями
6) Файл не "защищен" от некорректных данных либо их неполноты (отсутствия)

Если все же "нада", то не следует работать с таким файлом просто как со строками (например через TStringGrid или TListView, обо в этом случае все поиски, сортировки, фильтры и т.д. придется делать ручками, а в виду очевидного отсутствия у Вас опыта в таких делах, все это будет тормознуто и глючно. Воспользуйтесь подсказанным выше TClientDataSet, у которого масса фич именно для работы с табличными данными. Хотя в этом случае Вам придется вручную и загружать в него данные и сохранять затем обратно в файл. Да и все перечисленные в начале минусы останутся.

ИМХО, все же Экслеь или для многопользовательского доступа (так сказать на "вырост") не поленитесь освоить какую-нибудь СУБД. Убежден, рано или поздно этот опыт окажется весьма полезным


Sergey13   (2008-12-01 14:41:00) [43]

> [22] Xmen   (01.12.08 14:21)
> это будет мене чем килобайт информации

Так ты пишешь программу для печати одного экземпляра платежки?!!! Ну тогда да. Но проще в ексель или в ворде напечатать.


Сергей М.   (2008-12-01 14:27:00) [44]


> Xmen   (01.12.08 14:21) [22]
>
>


Сказано же - откажись от текст.формата контейнера (ибо ничем до сих пор не аргументировано, а значит блажь) в пользу TClientDataset'а.

Удовольствие от его использования получишь до поросячьего визга)

Я серьезно.


Xmen   (2008-12-01 14:21:00) [45]


> clickmaker ©   (01.12.08 12:38) [21]
> > Это прога для маленкой конторы, а там клиенты максимум
> 10-> 15можно какую-нибудь embedded dbтипа firebird


это будет мене чем килобайт информации, ради этого я бы нехотел исползовать пушку. Мне для этого достаточно перочиного ножа :)


clickmaker   (2008-12-01 12:38:00) [46]

> Это прога для маленкой конторы, а там клиенты максимум 10-
> 15

можно какую-нибудь embedded db
типа firebird


Anatoly Podgoretsky   (2008-12-01 10:28:00) [47]


> Делаю простую прогу для печати платежек. Что бы сохранить
> данные о клиентах нужно было их данные сохранить в техтовом
> файле.

Тебе нужен Эксель.
Он самодостаточен для данной работы.


ilshat   (2008-12-01 10:20:00) [48]

чувствую я что автор топика родственник "писателя" банк-клиента банка АльбаАльянс... тоже гений организовал хранение платежек в тектовиках (с полями фиксированной ширины).. теперь ни просмотреть историю, ничего нельзя :(
ну на крайняк есть типизированные файлы


Виталий Панасенко   (2008-12-01 10:16:00) [49]


> Xmen   (01.12.08 08:52) [12]

Имеются спецметоды у CDS - SaveToFile/LoadFromFile, Но я бы использовал СУБД... MS Access формат например...доступ к БД через ADO(Jet) и все дела.


Сергей М.   (2008-12-01 10:05:00) [50]


> Xmen   (01.12.08 08:52) [12]


Что "как это" ?


Xmen   (2008-12-01 09:45:00) [51]

Ну я хотел без СУБД. :(


Sergey13   (2008-12-01 09:22:00) [52]

> [14] Xmen   (01.12.08 09:17)
> И им излишный такие навароты.

Какие навороты? Статистика по платежам у начальника? Более 1 человека вводящего платежки?
В чем сложность использования СУБД? В наличии нескольких файлов вместе с программой?


Xmen   (2008-12-01 09:17:00) [53]

Ну я насчет простого я специально. Это прога для маленкой конторы, а там клиенты максимум 10-15. И им излишный такие навароты.


Sergey13   (2008-12-01 09:05:00) [54]

> [10] Xmen   (01.12.08 07:01)
> Так как нужно простая прога я бы нехотел исползовать базу.

А ты еще и винду не используй - зачем такое усложнение.

> Делаю простую прогу для печати платежек
И через год-полтора, когда платежек будут тысячи, заказчик вдруг (все события подобного рода происходят обычно ВДРУГ!) захочет посмотреть статистику свох платежей в разных разрезах или (не дай бог) поработать над платежками совместно.


Xmen   (2008-12-01 08:52:00) [55]


> Сергей М. ©   (01.12.08 08:40) [11]
> > Что бы сохранить данные о клиентах нужно было их данные
> > сохранить в техтовом файлеПочему именно текстовом-то ?
> Это что, блажь или чем-то обоснованное решение ?Ну возьми
> ты, к примеру, TClientDataSet - он, с одной стороны, есть
> наследник TDataSet со всеми его прелестями, а с другой умеет
> одним махом (LoafFromFile/SaveToFile) загружать/выгружать
> из/в файл набор данных в своем спец.формате


А как это?


Сергей М.   (2008-12-01 08:40:00) [56]


> Что бы сохранить данные о клиентах нужно было их данные
> сохранить в техтовомфайле


Почему именно текстовом-то ?
Это что, блажь или чем-то обоснованное решение ?
Ну возьми ты, к примеру, TClientDataSet - он, с одной стороны, есть наследник TDataSet со всеми его прелестями, а с другой умеет одним махом (LoafFromFile/SaveToFile) загружать/выгружать из/в файл набор данных в своем спец.формате


Xmen   (2008-12-01 07:01:00) [57]

Делаю простую прогу для печати платежек. Что бы сохранить данные о клиентах нужно было их данные сохранить в техтовом файле. Так как нужно простая прога я бы нехотел исползовать базу.
Пример сделал так
procedure TForm2.RzBitBtn1Click(Sender: TObject);
var
 F: file of TMember;
 i: Integer;
begin
 AssignFile(F,'client.dat');
 Rewrite(F);
 try
   Members[1].name:='2 - болалар богчаси.';
   Members[1].acc:='12345678912345678900';
   Members[1].bcode:='00452';
   Members[1].bname:='Gallabank';
   Members[1].okonx:='1042572';
   Members[1].inn:='3415821';
   Members[2].name:='13 - мактаб.';
   Members[2].acc:='12345671912345678900';
   Members[2].bcode:='00521';
   Members[2].bname:='Pakhtabank';
   Members[2].okonx:='7842572';
   Members[2].inn:='3414521';
   Members[4].name:='5 - мехрибонлик уйи.';
   Members[4].acc:='22345678912345678910';
   Members[4].bcode:='00332';
   Members[4].bname:='NBU';
   Members[4].okonx:='1490572';
   Members[4].inn:='6415828';
   for i := 1 to 50 do write(F,Members[i]);
 finally
   CloseFile(F);
 end;
end;

И ввод в таблицу
procedure TForm2.FormShow(Sender: TObject);
var
 ReadMembers: array[1..50] of TMember;
 F: file of TMember;
 i: Integer;
begin
 AssignFile(F,'client.dat');
 Reset(F);
 try
   i:=0;
   while not Eof(F) do
   begin
     read(F,ReadMembers[i]);
     StringGrid1.Cells[0,i]:=ReadMembers[i].name;
     StringGrid1.Cells[1,i]:=ReadMembers[i].acc;
     StringGrid1.Cells[2,i]:=ReadMembers[i].bcode;
     StringGrid1.Cells[3,i]:=ReadMembers[i].bname;
     StringGrid1.Cells[4,i]:=ReadMembers[i].okonx;
     StringGrid1.Cells[5,i]:=ReadMembers[i].inn;
     i:=i+1;

   end;
  finally
    CloseFile(F);
  end;  

end;
Но так не оченто получается


Труп Васи Доброго   (2008-11-29 00:10:00) [58]

Тебе убиться как принципиально именно текстовый файл использовать?
Может табличка старого доброго Excel спасёт твою карму?
И просто посмотреть на него можно и ручками подправить и в программе как таблицу подключить со всеми вытекающими прелестями.


palva   (2008-11-28 21:59:00) [59]


> Ну мне нужно работать как с базой но в роле хранилиша должно
> быть текстовый файл.

odbc может подключаться к текстовому файлу как к таблице. Конечно, файл должен иметь "табличный вид", поля отделены друг от друга разделителем или выровнены по ширине. Подсоединяйтесь через ADO и читайте. Писать, по-моему, нельзя. (Я не пробовал.)


Сергей М.   (2008-11-28 16:43:00) [60]


> Xmen


Весьма полезный ликбез по теме
http://www.rsdn.ru/article/delphi/dbcontrols.xml


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо