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

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


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

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 142
от 04.06.2005, 15:20

Администратор:Калашников О.А.
В номере:Вопросов: 4, Ответов: 17


Вопрос № 21486: Здравствуйте Уважаемые! В dbf-файле текст в WIN-кодировке при выводе этого файла на экран SQL Explorer, програмно через DBGrid, Database Desktop, текст отображается как DOS-кодировка,нечитается. Пробовал разные настройки языков (через дра...
Вопрос № 21493: Здравствуйте, уважаемые эксперты. У меня к вам вопрос, можно ли обращаться к компонентам имя которых находится в переменной? Например имеется несколько кнопок Button1, Button2, Button3 ... ButtonN программно вычисляется имя кнопки и заносится в ...
Вопрос № 21510: Здравствуйте уважаемые Эксперты, помогите решить проблему! Есть веб-камера LogitechQuickCam Zoom, как вывесть изображение в мою прогу? Желательно через MediaPlayer....
Вопрос № 21511: Привет всем! Вопрос следующий. Как выполнить преобразование строки к формату интернет-адреса? Opera, например, автоматически это делает и требуется сделать тоже самое в своей программе. Т.е. пробелы заменятся на "%20", другие символы - на д...

Вопрос № 21.486
Здравствуйте Уважаемые!
В dbf-файле текст в WIN-кодировке при выводе этого файла на экран SQL Explorer,
програмно через DBGrid, Database Desktop, текст отображается как DOS-кодировка,нечитается.
Пробовал разные настройки языков (через драйвера PARADOX,FOXPRO).
Если как текстовой посмотреть через Far например видно,что текст в Win-кодировке.
Для PARADOX пробовал Pdox ANSI Cyrillic.
Файл создан другой програмой на Visual FoxPro может дело имено в этом
для FOXPRO пробовал менять языковые настройки но ничего неполучилось.
Пока сделал конвертацию из win в dos.
Я делаю все это в DELPHI-7.
Спасибо.
Отправлен: 29.05.2005, 15:02
Вопрос задала: Трофименко Александр Васильевич (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Jadd
Здравствуйте, Трофименко Александр Васильевич!
Что-то я не уверен, что текст в вашем файле в вин-кодировке. Значит, попробйте при создании таблицы правильно выбирать кодовую страницу для ТАБЛИЦЫ. Это задается в Database Desktop. Если в программе будет писать по-русски, а в Database Desktop крякозябры, тогда тут нужно будет поменять шрифты DDT в реестре и в настройках DDT. Это - уже менее важная задача.
---------
Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 29.05.2005, 15:22
Оценка за ответ: 3
Комментарий оценки:
Я уверен, я же написал,что выполняю перекодировку
а значит при этом разобрался какая имено кодировка.
Шрифты DDT в реестре я поменял уже ранее и если
я работаю со свими таблицами то вопросов нет.
Здесь таблица создана не мной и в другой программе
в этом я думаю все дело.

Отвечает: komatoz
Здравствуйте, Трофименко Александр Васильевич!
У меня была похожая ситуация..
Я использовал драйвер foxprow но в результате при компиляции возникала ошибка, далее просто перезапускаешь делф и должно быть все нормально. По-моему это глюк разработчиков фирмы borland или еще чего...
Ответ отправил: komatoz (статус: 1-ый класс)
Отправлен: 30.05.2005, 02:17
Оценка за ответ: 3
Комментарий оценки:
Я думаю в моем случае все дело в том,что
файл создан в другой программе.

Отвечает: sir henry
Здравствуйте, Трофименко Александр Васильевич!
У Вас скорее всего в заголовке dbf-файла осталось указание на неправильную кодовую страницу. Вам нужно WIN (ср1251), а у Вас осталась ДОС (ср866).
29-ый байт от начала файла (начинается с нуля) содержит байт кодовой страницы. Можете отредактировать его прямо в FAR'e.
65 (HEX) - кодовая страница ДОС,
С9 (НЕХ) - кодовая страница WIN.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 30.05.2005, 09:08
Оценка за ответ: 3
Комментарий оценки:
Познавательно,однако мне непомогает
у меня стоит C9.

Отвечает: Pushkin
Здравствуйте, Трофименко Александр Васильевич!
Попробуй поменять в DBF файле байт по смещению 1Dh=29. Если постваить на ноль, то все должно быть ОК.
Ответ отправил: Pushkin (статус: 3-ий класс)
Отправлен: 31.05.2005, 18:29


Вопрос № 21.493
Здравствуйте, уважаемые эксперты.
У меня к вам вопрос, можно ли обращаться к компонентам имя которых находится в переменной? Например имеется несколько кнопок Button1, Button2, Button3 ... ButtonN программно вычисляется имя кнопки и заносится в переменную строкового типа и у этой кнопки нужно изменить какое ни будь свойство например Caption.
Отправлен: 29.05.2005, 18:28
Вопрос задала: Rider (статус: 1-ый класс)
Всего ответов отправлено: 7

Отвечает: Master89
Здравствуйте, Rider!
Да, можно. Например вот так:
Var ButtonName: String;
...
ButtonName:='Button3';
TButton(FindComponent(ButtonName)).Caption:='Click me!';
Ответ отправил: Master89 (статус: 4-ый класс)
Отправлен: 29.05.2005, 19:01
Оценка за ответ: 5

Отвечает: Bochvarov NikB
Здравствуйте, Rider!
Конечно, тьи узнаеш как можно ето сделать, но никто не делает так :)
Лучше, если создаеш ети кнопки RunTime, в масив примерно (или tList). И тогда, когда вьичислиш "i-тую" кнопку будеш работать с Buttons[i].

Приложение:

Ответ отправил: Bochvarov NikB (статус: 4-ый класс)
Отправлен: 29.05.2005, 20:13

Отвечает: Jadd
Здравствуйте, Rider!
Можно. У класса формы (например, Form1) есть такое свойство Controls. Этот контрол - массив всех контролов формы. Так вот. Можно получить конкретный контрол или по имени, или по его типу (механизм RTTI). Например, так:
var
nIndex: Integer;
begin
for nIndex:=0 to Form1.ControlCount-1 do
begin
if Form1.Controls[nIndex].Name = 'myButton' then
begin
//меняем то, что нам нравится, например меняем Caption
Form1.Controls[nIndex].Caption := 'Test';
end;
end;
Примерно так. Механизм RTTI описан в хелпе и книге С. Орлика (весьма старой).
Удачи.
---------
Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 29.05.2005, 20:20

Отвечает: John Freeman
Здравствуйте, Rider!
Метод FindComponent у Owner'a твоих кнопок
В простейшем случае пример:
(Form1.findcomponent('Button'+inttostr(number)) as TButton).click;
---------
Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 29.05.2005, 21:26

Отвечает: Stamm
Здравствуйте, Rider!
i:=1;
(FindComponent(Format('Button%d',[i])) as TButton).caption:='Stamm';
Ответ отправил: Stamm (статус: 4-ый класс)
Отправлен: 29.05.2005, 22:51

Отвечает: sir henry
Здравствуйте, Rider!
Есть вариант попроще - создать массив из кнопок и обращаться к каждой кнопке по ее индексу:
var
MyButtons: array [0..9] of TButtons;
Begin
For i:=0 To 9 do
MyButtons[i].Caption:='Кнопка '+IntToStr(i);
End;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 30.05.2005, 09:11

Отвечает: Delphin
Здравствуйте, Rider!
FindComponent(); По этой функции читай в справке Delphi она довольно хорошо написана.

---------
Ищу сервис пак для школы ^)))
Ответ отправил: Delphin (статус: 3-ий класс)
Отправлен: 30.05.2005, 15:55


Вопрос № 21.510
Здравствуйте уважаемые Эксперты, помогите решить проблему!
Есть веб-камера LogitechQuickCam Zoom, как вывесть изображение в мою прогу? Желательно через MediaPlayer.
Отправлен: 30.05.2005, 11:18
Вопрос задала: Malish (статус: Студент)
Всего ответов отправлено: 2

Отвечает: sir henry
Здравствуйте, Malish!
Запросите у разработчиков софта на эту камеру (диск должен идти в комплекте) список функций из DLL'лек для работы с камерой. Они Вам с радостью вышлют. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 30.05.2005, 11:43

Отвечает: Denisss
Здравствуйте, Malish!
Используйте набор компонент DSPack - там есть все, что нужно для работы с веб-камерами и видео файлами.
Ответ отправил: Denisss (статус: 1-ый класс)
Отправлен: 31.05.2005, 18:53
Оценка за ответ: 5


Вопрос № 21.511
Привет всем! Вопрос следующий. Как выполнить преобразование строки к формату интернет-адреса? Opera, например, автоматически это делает и требуется сделать тоже самое в своей программе. Т.е. пробелы заменятся на "%20", другие символы - на другие коды. Например, слово "Поиск" заменяется на "%D0%9F%D0%BE%D0%B8%D1%81%D0%BA", т.е. для каждой буквы русского алфавита существует некий шестнадцатеричный код. Подскажите, как выполнить такое преобразование? Варианты вроде "посмотри каждую букву в Opera и добавь в массив" просьба не предлагать. Кроме букв преобразуются ещё и некоторые символы. Заранее благодарен.
Отправлен: 30.05.2005, 12:02
Вопрос задала: Master89 (статус: 4-ый класс)
Всего ответов отправлено: 4

Отвечает: Boriss
Здравствуйте, Master89!
То есть, Вы хотите что-то вроде того, что в приложении?

Приложение:

---------
Прорвемся! (Быть может :(( )

Ответ отправил: Boriss (статус: Профессор)
Отправлен: 30.05.2005, 12:29
Оценка за ответ: 5
Комментарий оценки:
Да, именно это. Благодарю.

Отвечает: John Freeman
Здравствуйте, Master89!
Так и делай, только не через ж.(через Opera в смысле) , а через Ord() и Format() в строку с Hex числом
Ord - номер символа
Format - этот номер символа в HEX число в строке, % сам добавишь
---------
Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 30.05.2005, 12:35
Оценка за ответ: 4

Отвечает: sir henry
Здравствуйте, Master89!
Если Вам нужен алгоритм замены, то пожалуйста:
1. С помощью функции Pos() находите то, что нужно заменить
2. Удаляете символ на этом месте с помощью функции Delete()
3. Вставляете на это место нужный Вам символ с помощью функции Insert().
Если же Вас интересуют конкретные символы, которые НУЖНО подставлять, то обратитесь в рассылку по браузерам или т.п.
Меня особенно порадовало вот это место в Вашем письме:
"... просьба не предлагать." Отчего же Вы не захотели написать, что Вам можно предлагать? Вы думаете все кругом умеют читать Ваши мысли? Или осведомлены об уровне Ваших знаний?
А у меня, например, слово "Поиск" представляется как "%CF%EE%E8%F1%EA". И какой-же вариант Вам предлагать в таком случае?
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 30.05.2005, 12:42
Оценка за ответ: 3
Комментарий оценки:
Всё-таки, РусФак создан для помощи, а не для рассуждений ;)
Насчёт слова "Поиск" - в Opera как-то по-другому сделано, хотя оба варианта выдают верное слово.

Отвечает: komatoz
Здравствуйте, Master89!
Вот как-то делал похожее, просто я за исходные данные брал таблицу.
Мог не все символы прописать. Так что проверяйте.
procedure TForm1.Button1Click(Sender: TObject);
var
res,s,st:string;
ch:char;
i:integer;
begin
s:=edit1.Text;
st:='';
for i:=1 to length(s) do
begin
res:='';
ch:=s[i];
if ch='@' then res:='40';
if ch='A' then res:='41';
if ch='B' then res:='42';
if ch='C' then res:='43';
if ch='D' then res:='44';
if ch='E' then res:='45';
if ch='F' then res:='46';
if ch='G' then res:='47';
if ch='H' then res:='48';
if ch='I' then res:='49';
if ch='J' then res:='4A';
if ch='K' then res:='4B';
if ch='L' then res:='4C';
if ch='M' then res:='4D';
if ch='N' then res:='4E';
if ch='O' then res:='4F';
if ch='P' then res:='50';
if ch='Q' then res:='51';
if ch='R' then res:='52';
if ch='S' then res:='53';
if ch='T' then res:='54';
if ch='U' then res:='55';
if ch='V' then res:='56';
if ch='W' then res:='57';
if ch='X' then res:='58';
if ch='Y' then res:='59';
if ch='Z' then res:='5A';
if ch='a' then res:='61';
if ch='b' then res:='62';
if ch='c' then res:='63';
if ch='d' then res:='64';
if ch='e' then res:='65';
if ch='f' then res:='66';
if ch='g' then res:='67';
if ch='h' then res:='68';
if ch='i' then res:='69';
if ch='j' then res:='6A';
if ch='k' then res:='6B';
if ch='l' then res:='6C';
if ch='m' then res:='6D';
if ch='n' then res:='6E';
if ch='o' then res:='6F';
if ch='p' then res:='70';
if ch='q' then res:='71';
if ch='r' then res:='72';
if ch='s' then res:='73';
if ch='t' then res:='74';
if ch='u' then res:='75';
if ch='v' then res:='76';
if ch='w' then res:='77';
if ch='x' then res:='78';
if ch='y' then res:='79';
if ch='z' then res:='7A';
if ch='.' then res:='2e';
if ch='/' then res:='2F';
if ch=':' then res:='3A';
st:=st+'%'+
res;
end;
memo1.Text:=st;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
button1.Click;
end;
Ответ отправил: komatoz (статус: 1-ый класс)
Отправлен: 31.05.2005, 02:14
Оценка за ответ: 4
Комментарий оценки:
Требуется преобразовать русский текст. С английским подобных проблем нет.


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное