Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 286
от 08.02.2004, 02:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1314
Отправлено ответов: 2855
Активность: 217.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Tano
Статус: Опытный
Общий рейтинг: 130.04
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 160.04
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 152.4
URL: Программирование на Паскале
[Подробней >>]
 
THE_PRO
Статус: Профессиональный
Общий рейтинг: 139.17
URL: THE_PRO
Телефон: (994 +12) 989647
[Подробней >>]
samum2000
Статус: Опытный
Общий рейтинг: 122.13
[Подробней >>]
Pawel
Статус: Опытный
Общий рейтинг: 160.54
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.53
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 145.45
URL: Программирование
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1302. у меня вопрос тут возник: Я хочу сделать на дельфи эдакий сборник статей. Они должны храниться в одн... (ответов: 6)
Вопрос № 1303. Народ, подскажите что есть Юникод, и как его юзать в дельфяной проге?... (ответов: 5)
Вопрос № 1304. Здравствуйте. 1. Начал с базами данных разбираться недавно, раньше считал это несерьезным делом и за... (ответов: 3)
Вопрос № 1305. Я хочу написать поисковик файлов, но у меня возникла проблема при выводе результатов: необходимо что... (ответов: 3)
Вопрос № 1306. Ага, понял что такое Юникод, а кам мне решить проблму что бы в проге написанной на делфи, в английск... (ответов: 5)

Вопросов: 5, ответов: 22


 Вопрос № 1302

у меня вопрос тут возник: Я хочу сделать на дельфи эдакий сборник статей. Они должны храниться в одном файле.
Программа загружаетя->Пользователь выбирает пункт из списка статей и стаья появляется в memo.
Как мне лучше это сделать ?



Вопрос отправлен: 03.02.2004, 15:11
Отправитель: Bizz

[Следующий вопрос >>] [Список вопросов]

Отвечает Tano

Приветствую Вас, Bizz!
Я бы сделал так:
Файл [1] - вроде индексного, где храниться массив из record, каждая из которых будет хранить инфу о длине(integer), начальной позиции(integer) и заголовке (string[фикс_длина]) статьи в файле [2]. Грузишь при запуске файл [1] как типизированый динамический массив и по запросу - данные из файла [2] функцей BlockRead().
Файлы можно объединить. Редактор статей, тоже самому надо будет делать.
ЛИБО
если будет только текст в статьях, можно их загнать в один .txt файл со своей разметкой вроде XML (нагляднее, проще редактировать, но медленнее поиск).

Ответ отправлен: 03.02.2004, 22:26
Отправитель: Tano


Отвечает sir henry

Приветствую Вас, Bizz!
Лучше и проще все это сделатьв виде HTML :)).
Впрочем, если надо на Дельфи, то можно и там.
1. Сами статьи.
Храниться они должны исключительно в текстовом формате (требования МЕМО :).
2. Раз они все в одном файле, должен быть поиск, который бы однозначно определял начало новой статьи.
Можно организовать поиск по названию. Т.е. в отдельном поле вводиться название требуемой статьи. В мемо считываются последовательно строки и проверяются на наличие требуемой подстроки. Проверка делается функцией Pos().
3. Если должен быть список статей, а мы предполагаем, что статьи добавляются в конец файла в любое время, то при запуске программы должно создаваться оглавление. Опять же перебором строк и функцией Pos().
4. Выбор статьи и переход к ней.
Т.к. мемо - это фактически одномерный массив строк, то при создании оглавления нужно просто запоминать индекс массива, с которого начинается новая статья и при выборе статьи в оглавлении переходить к этой строке.


Ответ отправлен: 04.02.2004, 15:41
Отправитель: sir henry


Отвечает Boriss

Добрый день, Bizz!
Вряд ли такое имеет смысл. Представь, какой файлище будет
Есть два способа решения задачи:
1) в базе данных, там в зависимости от типа: BLOB или MEMO поля - содержимое файла;
2) В своем файле. Там сначала записываешь, типа как в BMP, что и по какому смещению и сколько хранится. Seek(конец этого файла). А там новый такой заголовок. и так до ....


Ответ отправлен: 04.02.2004, 19:05
Отправитель: Boriss


Отвечает THE_PRO

Приветствую Вас, Bizz!
Через DBF таблицы!

Ответ отправлен: 03.02.2004, 15:34
Отправитель: THE_PRO


Отвечает samum2000

Добрый день, Bizz!
Вопрос достаточно абстрактный, поэтому и ответ будет в общих чертах.
Если вы намерены делать это без использования баз данных, то тогда придется разработать свой формат файла, что является не самой простой задачей.
Отображение статьи в Memo сделать достаточно просто: необходимо ассоциировать с каждой статьей и пунктом списка некий идентификатор (число). На выбор нового меню в списке вызывается обработчик события (какого - зависит от того, что вы используете в качестве списка), в нем-то и происходит чтение текста статьи из файла (или базы данных) с дальнейшим присваиванием этого текста компоненту memo.

Ответ отправлен: 05.02.2004, 07:38
Отправитель: samum2000


Отвечает Pawel

Здравствуйте, Bizz!
Нужно создать свой фаил-пакет, содержащий список фаилов с их смещением и размером.
При запуске проги ты читаеш индесный фаил, и грузишь его.


Ответ отправлен: 06.02.2004, 19:09
Отправитель: Pawel


 Вопрос № 1303

Народ, подскажите что есть Юникод, и как его юзать в дельфяной проге?



Вопрос отправлен: 03.02.2004, 22:32
Отправитель: Кирилл (karatetski@tut.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Приветствую Вас, Кирилл!
Это значит, что для каждого символа отводится 2 байта, чтоб и иероглифами можно было писать.
И по умолчанию в Delphi все строки в этом формате. По это причине для обработки рекомедуют пользоваться функциями, которые начинаются с Ansi...

Ответ отправлен: 04.02.2004, 19:09
Отправитель: Boriss


Отвечает vitya

Добрый день, Кирилл!
Unicode - это кодировка, где символы кодируются по 2 байта. Это нужно, что бы все мировые символы были включены. Для использования их надо гонять WinAPI, юникодовские функции (у них на конце W). А для строк наверное использовать WORD указатели, или может есть встроенные типы, как в c++ (wchar_t)

Ответ отправлен: 04.02.2004, 08:37
Отправитель: vitya


Отвечает THE_PRO

Добрый день, Кирилл!
Eto kodirovka simvolov perviye 255 kotoroqo sovpadayut s ANSI, a 128 s ASCII
On podderjivayet vse narodniye alfaviti!

Ответ отправлен: 04.02.2004, 12:27
Отправитель: THE_PRO


Отвечает sir henry

Приветствую Вас, Кирилл!
Юникод есть двухбайтовый символ, в отличие от OEM и ANSI символов, который состоят только из одного байта.
Юзать его можно спокойно :)). Все функции по работе с Юникодом (а их туча немеряная :) начинаются с WIDE. Пожалуйста загляните в справку и смотрите все, что начинается с WIDE.

Ответ отправлен: 04.02.2004, 15:46
Отправитель: sir henry


Отвечает samum2000

Здравствуйте, Кирилл!
Юникод - Стандарт кодировки знаков, разработанный организацией Unicode Consortium, который позволяет представить знаки практически всех письменных языков. Набор знаков в кодировке Юникод имеет несколько форм представления, включая UTF-8, UTF-16 и UTF-32. В большинстве интерфейсов Windows используется форма UTF-16, то есть каждый символ занимает 2 байта (16 бит).
В Delphi тип WideChar является строкой Unicode.

Ответ отправлен: 05.02.2004, 07:38
Отправитель: samum2000


 Вопрос № 1304

Здравствуйте.
1. Начал с базами данных разбираться недавно, раньше считал это несерьезным делом и занимался в основном системным программированием, WinAPI и т.п.
Короче, суть проблемы такова:
Есть база InterBase'овская.
В определенной таблице есть несколько полей, которые "NOT NULL".
При добавлении записи нажатием кнопочки на TDBNavigator или методом Insert СРАЗУ (то есть, когда я еще не нажал кнопку Apply на TDBNavigator) вылазит окошко с исключением типа "Field PRODUCT_ID must have a value", хотя я еще не задавал значений для этой записи.
С другими - не моими Interbase-базами все нормально - исключение вылезает не сразу после нажатия на кнопку, а вылезает только тогда, если я не заполнил поле, которое должно быть "не null" и попытаюсь добавить запись (нажать кнопку Apply на TDBNavigator).
Подскажите, что нужно изменить в базе, чтобы было все нормально (книг нет, разбираюсь сам, база создавалась при помощи проги EMS InterbaseFirebird Manager 3.7). Параметры базы: SQLDialect 3, PageSize 4096, ForcedWrites OFF,ReadOnly FALSE, кодовая страница - WIN1251.
Могу, если что, прислать базу.
2. Есть в инете какие-нибудь компоненты типа TDBImage, но чтобы с JPEG работали.



Вопрос отправлен: 04.02.2004, 08:21
Отправитель: Marouder (marouder@list.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Доброе время суток, Marouder!
1)Ne perexodi s odnoy zapisi na drquyu ne zadav yey znacheniye, i zadavay ix v tom poryadke v kakom oni naxodyatsya v tablitse.
2)Ne znayu!

Ответ отправлен: 04.02.2004, 13:46
Отправитель: THE_PRO


Отвечает sir henry

Приветствую Вас, Marouder!
Раз у Вас стоит NOT NULL, значит у поля, при создании записи, должно быть какое-то значение по умолчанию.
Если Вы создаете таблицу основываясь на доменах, то домен нужно создавать так:
CREATE DOMAIN имя AS тип DEFAULT значение_по_умолчанию NOT NULL
Либо при создании таблицы, в определении столбца, задавать свойство DEFAULT.
CREATE TABLE имя_таблицы (столбец тип DEFAULT значение_по_умолчанию)
----
Можно попробовать такое добавление новой записи:
INSERT INTO таблица (столбец_где_NOT_NULL) VALUE (значение)

Ответ отправлен: 04.02.2004, 15:59
Отправитель: sir henry


Отвечает Bob Johnson

Здравствуйте, Marouder!
Вообще, намного качественнее будет, если ты не будешь вообще использовать DBGrid, DBNavigator и т.д. Тогда ты будешь сам управлять всем процессом работы с БД.
Ну а конкретно по твоей ситуации - смотри, может в той базе, где это работает нормально есть какие-либо триггеры на событие insert и т.д. Также проверь ключевое поле таблицы и посмотри, как оно заполняется.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 05.02.2004, 09:55
Отправитель: Bob Johnson


 Вопрос № 1305

Я хочу написать поисковик файлов, но у меня возникла проблема при выводе результатов: необходимо чтобы имя файла выводилось вместе с его иконкой. Может быть есть какие нибудь функции для получения иконки из файла, и если будет не трудно, то пришлите исходник, где если функции передается имя файла, то она помещает в список результатов его имя с его иконкой. Заранее благодарен.



Вопрос отправлен: 04.02.2004, 11:25
Отправитель: Sergey

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Приветствую Вас, Sergey!
U TImage yest metod LoadFromResourceID

Ответ отправлен: 04.02.2004, 13:43
Отправитель: THE_PRO


Отвечает Boriss

Здравствуйте, Sergey!
1) В Application есть свойство Icon
2) В модуле ClipIcon:
- AssignClipboardIcon - Процедура заполняет иконку Icon данными из буфера обмена (Clipboard)
- CopyIconToClipboard - No comments
3) В ShellApi функция ExtractAssociatedIcon
4) а получать можно примерно так:
var
hIc, hLib: THandle;
SystemDirectory: PChar;
begin
GetMem(SystemDirectory, MAX_PATH);
GetSystemDirectory(SystemDirectory, MAX_PATH);
hLib := LoadLibrary(PChar(SystemDirectory + 'shell32.dll'));
hIc := LoadIcon(hLib, MAKEINTRESOURCE(20));


Ответ отправлен: 04.02.2004, 19:29
Отправитель: Boriss


Отвечает Pawel

Здравствуйте, Sergey!
В Deplhidemo есть пример.
Нужно испльзовать LoadIco;


Ответ отправлен: 06.02.2004, 19:28
Отправитель: Pawel


 Вопрос № 1306

Ага, понял что такое Юникод, а кам мне решить проблму что бы в проге написанной на делфи, в английской винде, русский текст отображался нормально без всяких поддержок кирилицы!



Вопрос отправлен: 04.02.2004, 23:17
Отправитель: Kirill (karatetski@tut.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, Kirill!
Для этого, как минимум, в английской винде должны быть установлены русские шрифты и русская локаль :).

Ответ отправлен: 05.02.2004, 03:44
Отправитель: sir henry


Отвечает Boriss

Доброе время суток, Kirill!
???????????? Мужик! Ты понял хоть, что написал? Delphi использует для отображения функции Windows, и если тот не знает, как отобразить символ с кодом 200 "правильно по-твоему"....
Дай дополнительную информацию:
Хоть в какой-то проге русские буквы "правильными" видишь?

Ответ отправлен: 05.02.2004, 09:19
Отправитель: Boriss


Отвечает THE_PRO

Доброе время суток, Kirill!
Dlya unicode strok yest spetsialniy tip WideString

Ответ отправлен: 05.02.2004, 11:50
Отправитель: THE_PRO


Отвечает samum2000

Приветствую Вас, Kirill!
Ну, так и используй в своей проге unicode-строки (WideChar, PWideChar, и WideString) и такие же шрифты (по-моему отлично подходит Serif).

Ответ отправлен: 06.02.2004, 08:58
Отправитель: samum2000


Отвечает Pawel

Приветствую Вас, Kirill!
Установить или загрузить свой(РУССКИЙ) шрифт!!!

Ответ отправлен: 06.02.2004, 19:31
Отправитель: Pawel



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (14)
Perl (1)
Builder / Delphi (18)
Pascal (18)
Basic / VBA (7)
Java / JavaScript (3)
PHP (12)
Криптография (4)
WinAPI (9)
Радиоэлектроника (5)
Пользователю
Windows 95/98/Me (45)
Windows NT/2000/XP (59)
"Железо" (35)
Поиск информации (16)
Администратору
Windows NT/2000/XP (32)
Linux / Unix (12)
Юристу
Гражданское право (15)
Семейное право (10)
Трудовое право (12)
КоАП (11)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное