Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

Чтение данных из внешнего файла   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.015 c
6-23708
VS2001
2002-04-18 18:03
2002.07.08
Помогите ПЛИЗ !!! Проблема с удалением файла на ФТП сервере


1-23667
Twin
2002-06-26 13:16
2002.07.08
CMYK


3-23518
Сано
2002-06-18 09:38
2002.07.08
Parameters


1-23615
Александр
2002-06-25 13:02
2002.07.08
Иконки


3-23491
Voland_s
2002-06-14 20:57
2002.07.08
Delphi и DTS