Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
ВнизЧтение данных из внешнего файла Найти похожие ветки
← →
Archont (2002-06-26 22:47) [0]Господа, проблема такого плана:
Я пишу браузер для CD с фотографиями, не было проблем, пока не пришла идея пояснить каждую фотографию, т. е. на форме есть поле мемо, предназаначенное для описания. Писать для каждой фотографии свой файл с описанием - по-моему глупо, хотелось бы использовать лишь один файл, если у кого есть опыт создания подобных алгоритмов, плз, поделитесь..
Заранее спасибо...
← →
rhf (2002-06-26 22:53) [1]тебе БД надо завести........
← →
alena.svt (2002-06-26 22:59) [2]Посмотри как это TheBat делает.
← →
alena.svt (2002-06-26 23:01) [3]А лучше как DElphi в DFM-файлах сохраняет настройки формы и картинок на ней. Вот отсюда и начинай копать.
← →
Viewer (2002-06-26 23:01) [4]Не обязательно.
Достаточно использовать типизированный файл.
← →
alena.svt (2002-06-26 23:02) [5]Согласна!
← →
Viewer (2002-06-26 23:04) [6]Либо TIniFile
[имя_файла_картинки]
rem=qwerty..-описание
← →
Юрий Зотов (2002-06-26 23:05) [7]IMHO, БД, в данном случае - это примерно то же самое, что ездить на кухню на бронетранспортере, как тут кто-то недавно очень метко выразился.
Сойдет и некий аналог INI-файла. Название секции - это номер рисунка (или его имя, или имя его файла и т.д. - короче, любой уникальный идентификатор, связанный с самим рисунком). А тело секции - это подпись. Причем, конечно, совершенно не обязательно использовать именно средства работы с INI-файлами, вполне годятся и обычные. Тот же StringList, например.
← →
Viewer (2002-06-26 23:07) [8]Типизированный будет иметь принятое ограничение на размер записи,
ini-файл - свободный размер
← →
alena.svt (2002-06-26 23:09) [9]Не поняла с Ini
← →
Viewer (2002-06-26 23:14) [10]На диске храняться файлы-картинки
img_01.jpg
img_02.jpg
img_03.tiff
В ini-файл пишется секция
[img_01.jpg]
и ключ, например
rem=Таким я был молодым, а рядом Она.
и т.д.
Соответственно при выборке файла-картинки на просмотр из ini-файла
по секции и ключу вытягивается описание
← →
alena.svt (2002-06-26 23:18) [11]Он же хочет использовать всего один файл.
Я так поняла чтоб в нем и картинки были и описание к фотографиям.
← →
Viewer (2002-06-26 23:24) [12]Не увидел я этого в его вопросе.
Понятно было, что файлы-картинки отдельно, а описание - один файл.
В противном случае, если хочется все в один файл - тогда может
и действительно в БД проще будет.
DBISAM вполне подойдет - не надо BDE и инсталляции - все в одном флаконе.
← →
alena.svt (2002-06-26 23:28) [13]Да нет все можно у меня даже исходники были но вирус меня погрыз ничего не осталось. Файл был построен как в TheBat персональная книга. То есть фотографии, Email, и т.д
С уважением
← →
Archont (2002-06-26 23:29) [14]To: alena.svt
Нет, не совсем точно поняла, я имел в виду, что 1 файл, в котором конкретно будут описания фото, а картинки, сами отдельными файлами...
идея с ini интересная, а если скажем будет файл *.dat формата:
<название файла> ; <описание>, тогда как, может я конечно изобретаю велосипед, но что поделаешь, хочется гибкости..
← →
Viewer (2002-06-26 23:31) [15]Конечно можно и самому в собственный формат все уложить.
Только если есть готовые методы доступа, зачем велосипеж изобретать ?
← →
Юрий Зотов (2002-06-26 23:31) [16]> Типизированный будет иметь принятое ограничение на размер записи
Ага. Например, самый обычный TextFile - никаких ограничений.
> ini-файл - свободный размер
Ага. Если не считать того, что сам INI-файл не может быть больще 32К. Маловато, пожалуй, окажется...
← →
Viewer (2002-06-26 23:37) [17]Спорить не буду.
Автору виднее, что выбрать из предложенного, исходя из известных ему количесвенных ограничений.
← →
Archont (2002-06-26 23:40) [18]На самом деле 32 кила может оказаться мало, потому как файлов очень много...
Я сталкивался с программой напоминателем, где данные были записаны именно в этом формате (пример)
22/04/1981: Мой день рождения
------------
← →
Viewer (2002-06-26 23:43) [19]Тогда, действительно, текстовый файл.
Поиск организовывать самому придеться,а также строку парсить.
← →
Archont (2002-06-26 23:47) [20]Т.е. имеется в виду пошагово:
1. Открытие файла
2. Переменная = имя файла фото
3. Поиск конкретной строки
4. Чтение в переменную
5. Отсекание всего до знака ":"
ну а далее разберемся..
так?
← →
Viewer (2002-06-26 23:52) [21]Почти
3.Чтение строки.
4.Парсим по символу-разделителю
5.Сравнение с именем файла левой части
и печать правой, если совпало
← →
Viewer (2002-06-26 23:53) [22]Ну да или поиск вхождения имени файла в строку, но тут чего-то может случано совпасть
← →
Archont (2002-06-26 23:56) [23]Спасибо, может сново подниму вопрос, если не выйдет. :)
← →
Archont (2002-06-27 00:01) [24]sorry
сново = снова :)
← →
Юрий Зотов (2002-06-27 00:11) [25]> Поиск организовывать самому придеться,а также строку парсить.
Не-а, почти ничего не придется, практически все уже есть готовое.
Вот далеко не лучший, зато простейший пример.
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;
← →
Viewer (2002-06-27 00:48) [26]Ну не сказал бы что этот сложнее.
Но память файл не отъедает.
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;
← →
Archont (2002-06-27 02:23) [27]Большое спасибо за идеи, я использовал алгоритм Юрия, только пришлось его немного покроить и приделать проверку на окончание файла, а то уж очень сильно она ругалась. :))
Еще есть вопросик в теме по ПрогрессБару...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c