![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение данных из внешнего файла [D6, WinXP]
Archont © (2002-06-26 22:47:00)Господа, проблема такого плана:
Я пишу браузер для CD с фотографиями, не было проблем, пока не пришла идея пояснить каждую фотографию, т. е. на форме есть поле мемо, предназаначенное для описания. Писать для каждой фотографии свой файл с описанием - по-моему глупо, хотелось бы использовать лишь один файл, если у кого есть опыт создания подобных алгоритмов, плз, поделитесь..
Заранее спасибо...
Archont (2002-06-27 02:23:00) [1]Большое спасибо за идеи, я использовал алгоритм Юрия, только пришлось его немного покроить и приделать проверку на окончание файла, а то уж очень сильно она ругалась. :))
Еще есть вопросик в теме по ПрогрессБару...
Viewer (2002-06-27 00:48:00) [2]Ну не сказал бы что этот сложнее.
Но память файл не отъедает.
function LoadStr(FileName: String; str: String): string;
var
infile: TextFile;
i: Integer;
begin
Result := "";
AssignFile(infile, FileName);
try
Reset(infile);
while not SeekEOF(infile) do
begin
readln(infile,Result);
if pos(str,Result) > 0 then break;
end;
i := pos(":",Result);
if i > 0 then Result := copy(Result, pos, Length(Result-pos-1));
finally
CloseFile(infile);
end;
end;
Юрий Зотов (2002-06-27 00:11:00) [3]> Поиск организовывать самому придеться,а также строку парсить.
Не-а, почти ничего не придется, практически все уже есть готовое.
Вот далеко не лучший, зато простейший пример.
var
i: integer;
...
with TStringList.Create do
try
LoadFromFile("...");
Memo1.Clear;
i := IndexOf("[имя_рисунка]");
if i >= 0 then
begin
Inc(i);
while Strings[i][1] <> "[" do
begin
Memo1.Lines.Add(Strings[i]);
Inc(i)
end
end
finally
Free
end;
Archont (2002-06-27 00:01:00) [4]sorry
сново = снова :)
Archont (2002-06-26 23:56:00) [5]Спасибо, может сново подниму вопрос, если не выйдет. :)
Viewer (2002-06-26 23:53:00) [6]Ну да или поиск вхождения имени файла в строку, но тут чего-то может случано совпасть
Viewer (2002-06-26 23:52:00) [7]Почти
3.Чтение строки.
4.Парсим по символу-разделителю
5.Сравнение с именем файла левой части
и печать правой, если совпало
Archont (2002-06-26 23:47:00) [8]Т.е. имеется в виду пошагово:
1. Открытие файла
2. Переменная = имя файла фото
3. Поиск конкретной строки
4. Чтение в переменную
5. Отсекание всего до знака ":"
ну а далее разберемся..
так?
Viewer (2002-06-26 23:43:00) [9]Тогда, действительно, текстовый файл.
Поиск организовывать самому придеться,а также строку парсить.
Archont (2002-06-26 23:40:00) [10]На самом деле 32 кила может оказаться мало, потому как файлов очень много...
Я сталкивался с программой напоминателем, где данные были записаны именно в этом формате (пример)
22/04/1981: Мой день рождения
------------
Viewer (2002-06-26 23:37:00) [11]Спорить не буду.
Автору виднее, что выбрать из предложенного, исходя из известных ему количесвенных ограничений.
Юрий Зотов (2002-06-26 23:31:00) [12]> Типизированный будет иметь принятое ограничение на размер записи
Ага. Например, самый обычный TextFile - никаких ограничений.
> ini-файл - свободный размер
Ага. Если не считать того, что сам INI-файл не может быть больще 32К. Маловато, пожалуй, окажется...
Viewer (2002-06-26 23:31:00) [13]Конечно можно и самому в собственный формат все уложить.
Только если есть готовые методы доступа, зачем велосипеж изобретать ?
Archont (2002-06-26 23:29:00) [14]To: alena.svt
Нет, не совсем точно поняла, я имел в виду, что 1 файл, в котором конкретно будут описания фото, а картинки, сами отдельными файлами...
идея с ini интересная, а если скажем будет файл *.dat формата:
<название файла> ; <описание>, тогда как, может я конечно изобретаю велосипед, но что поделаешь, хочется гибкости..
alena.svt (2002-06-26 23:28:00) [15]Да нет все можно у меня даже исходники были но вирус меня погрыз ничего не осталось. Файл был построен как в TheBat персональная книга. То есть фотографии, Email, и т.д
С уважением
Viewer (2002-06-26 23:24:00) [16]Не увидел я этого в его вопросе.
Понятно было, что файлы-картинки отдельно, а описание - один файл.
В противном случае, если хочется все в один файл - тогда может
и действительно в БД проще будет.
DBISAM вполне подойдет - не надо BDE и инсталляции - все в одном флаконе.
alena.svt (2002-06-26 23:18:00) [17]Он же хочет использовать всего один файл.
Я так поняла чтоб в нем и картинки были и описание к фотографиям.
Viewer (2002-06-26 23:14:00) [18]На диске храняться файлы-картинки
img_01.jpg
img_02.jpg
img_03.tiff
В ini-файл пишется секция
[img_01.jpg]
и ключ, например
rem=Таким я был молодым, а рядом Она.
и т.д.
Соответственно при выборке файла-картинки на просмотр из ini-файла
по секции и ключу вытягивается описание
alena.svt (2002-06-26 23:09:00) [19]Не поняла с Ini
Viewer (2002-06-26 23:07:00) [20]Типизированный будет иметь принятое ограничение на размер записи,
ini-файл - свободный размер