Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-23736
SPeller
2002-06-05 11:28
2002.07.08
Английский


14-23742
Malder
2002-06-03 17:35
2002.07.08
Сайты со всякими странностями


4-23840
KarlovAF
2002-05-06 05:40
2002.07.08
Как убрать форму из панели задач?


1-23546
Дельфятник
2002-06-26 17:37
2002.07.08
Access Violation при работе с TComboBox.


3-23494
Bocman
2002-06-17 12:22
2002.07.08
Как удалить запись?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский