В обычном текстовике. Проблема в том, что данные могут быть введены в любые из 5-ти полей и необходимо искать в строке их совокупно, можно конечно прописать все возможные условия(if edit1.text > '' and edit3.text > '') и т.п., но хотелось бы сделать по другому и изящней) Спасибо
Не знаю, представь себе телефонную базу 79210000000;Пупкин Василий Петрович;Чумная;1;287 534233;Пупкин Олег Петрович;ХЗКакая;100;23 534231;Пупкин О. П.;ХЗКакая;10;21 и т.п нужен универсальный метод который подойдет для любого формата
PHP: type TRec = packed record a:string[255]; b:string[255]; c:string[255]; d:integer; e:integer; end; var Rec:TRec; f:file of TRec; begin AssignFile(f, 'test.txt'); // Считывание записи { Reset(f); Read(f,Rec); Read(f,Rec); Writeln(Rec.a,#13#10,Rec.b,#13#10,Rec.c); } // Добавление записи { Rewrite(f); Write('a: '); Readln(Rec.a); Write('b: '); Readln(Rec.b); Write('c: '); Readln(Rec.c); Write('d: '); Readln(Rec.d); Write('e: '); Readln(Rec.e); Write(f,Rec); } Считал запись, проверил каждое поле на соответствие, если не нашел, считываешь следующую.
Прошу прощения, но ничего не понял, можно понятнее? Консолька не обязательна Данные можно загрузить в TStringList
Зачем грузить куда-то данные? Есть структура записи: PHP: type TRec = packed record a:string[255]; b:string[255]; c:string[255]; d:integer; e:integer; end; a,b,c,d,e можешь переименовать по своему вкусу, типа: телефон, фио, улица, дом, кв. Поскольку диапазон Integer'a ограничен 2 147 483 647, то для номера используется String. В данном случае это не помешает, т.к. никакие мат операции производиться не будут. Вся работа программы основывается на этой структуре. Ты работаешь не со строкой из текстового документа, а с документом, состоящим из этих структур, о чем говорит объявление PHP: var f:file of TRec; Чтобы считывать и записывать данные, мы создаем переменную PHP: Rec:TRec; Открываем файл на чтение PHP: AssignFile(f, 'test.txt'); Reset(f); Считываем из файла первую запись, в переменную типа TRec(наша структура) PHP: Read(f,Rec); Далее, если тебе нужно сделать поиск, например по телефону, пишешь что-то вроде: PHP: If pos(SearchString, Rec.Number)<>0 Then //нашелся номер или его часть Else //совпадений не найдено Перебор всего документа производится как и обычного текстового файла: while not eof(f) do begin ********************************************** А чтобы добавлять записи, нужно просто заполнить уже объявленную структуру, через переменную Rec PHP: Rec.Number:=Edit1.Text; Rec.FIO:=Edit2.Text; ... И затем эта структура записывается в файл PHP: Write(f,Rec); Так понятней?
Я поднял вопрос только потому, что искать придется по самым разным комбинациям, тел + фио и т.п., а вы мне пишете как искать по одному полю, что тут сказать, if pos('edit1.text', base.strings) - вот так, да, понятно. Или вышесказанный алгоритм позволяет искать по всевозможно введенным вариантам??
Сделал через условия if edit1.txt <> '' then begin if (pos(... и т.п. Если у кого будут другие решения, пишите. Спасибо! зы: может кому пригодится: скачать (27kb) Читает информацию из base.txt
Можно ли как-то сделать заполнение ListBox не в строчку, а по всему объему? Т.е. чтобы в небольшом по размеру окне ListBox'a текст не был написан сплошной строкой и, соответственно, не улетел в никуда, а строка была разбита на части которые бы были друг под другом
как запустить одну форму по нажатию кнопки на другой форме? Формы уже предварительно созданы. show не катит