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

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


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


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

Выпуск № 138
от 27.02.2003, 20:40

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


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

baldr
Статус: Профессиональный
Общий рейтинг: 113.89
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 107.9
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.76
URL: Пристанище неодинокого программиста
[Подробней >>]
 
Idle Sign
Статус: Профессиональный
Общий рейтинг: 138.75
URL: Blind Team
[Подробней >>]
Илья
Статус: Доверительный
Общий рейтинг: 108.63
[Подробней >>]


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

Вопрос № 466. Здравствуйте. Подскажите пожалуйста как реализовать следующее (см. приложение). То что там нап... (ответов: 1)
Вопрос № 467. Привет. Когда я делал выделение вперед, то курсор сразу становился в конце строки, а при отрицательн... (ответов: 1)
Вопрос № 469. Здравствуйте, знатоки. Вот два таких технических вопросика. 1.Какой формат у функции OemToChar и Cha... (ответов: 5)

Вопросов: 3, ответов: 7


 Вопрос № 466

Здравствуйте.
Подскажите пожалуйста как реализовать следующее (см. приложение). То что там написано работает нормально, но проблема в том, что если раскоментировать две строки в конце процедуры, то работает не правильно. Если что-то не понятно с удовольствием поясню дополнительно. Сейчас сложно пересказать словами, что там не так. Надо посмотреть. Посмотрите пожалуйста.


Приложение:


Вопрос отправлен: 21.02.2003, 18:02
Отправитель: Andy BitOff

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

Отвечает baldr

Здравствуйте, Andy BitOff!
Ты пытаешься сделать выделение назад? Не знаю, может и не должно глючить... Но ХЗ!
А почему бы не сделать:
memo1.SelStart:=-(Length(memo1.Text)-a);
memo1.SelLength:=Length(memo1.Text);

А переменная a у тебя не может оказаться отрицательной?


Ответ отправлен: 22.02.2003, 00:29
Отправитель: baldr


 Вопрос № 467

Привет.
Когда я делал выделение вперед, то курсор сразу становился в конце строки, а при отрицательном значении он становится там где надо, но при попытке напечатать следующую букву она всеравно оказывается в конце строки. Вот в этом то и проблема, чтобы после выделения нажатая бува оказывалась в месте курсора.



Вопрос отправлен: 22.02.2003, 09:37
Отправитель: Andy BitOff

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

Отвечает baldr

Добрый день, Andy BitOff!
Курсор устанавливается в MEMO, кажется, только через SelStart - как у тебя было сделано
я удивился сперва... Правда, у меня была Delphi4 и там могло некоторых функций не быть...
Но CaretPos была свойством ReadOnly вроде!
При существующем выделении и нажатии клавиши выделенный текст обычно заменяется на нажатую
букву... Если я понял правильно, у тебя что-то другое - типа Lookup? Ну тогда так и надо - при
нажатии клавиши выделенный текст заменяется на следующую букву текста и ты опять делаешь поиск!
Может, надо на другое событие это повесить?


Ответ отправлен: 23.02.2003, 00:31
Отправитель: baldr


 Вопрос № 469

Здравствуйте, знатоки.
Вот два таких технических вопросика.
1.Какой формат у функции OemToChar и CharToOem в смысле какие параметры надо писать в скобках и как ей вообще пользоваться? Вот смотрите:
var
s1,s2:string
ch1,ch2:char;
n:integer;

begin
Table1.First;
s1:=Table1Field1.Value.AsString //берём первую запись из //поля “Field1”
n:=ord(s[0]); //Получаем длину строки
for i:=1 to n do
begin
ch1:=s[i]; //берём первый символ этой записи
сh2:=CharToOem[ch1, и вот тут надо задать ещё какие-то параметры]
s2[i]:=ch2.AsString;

Вопрос №2:
Я хочу сделать базу данных картинок. Открываю DatabaseDesktop, выбираю New>Table, тип таблицы Paradox, тип поля Graphic. Так вот, как саму картинку туда положить? Хотя бы програмным путём?



Вопрос отправлен: 24.02.2003, 20:30
Отправитель: Алексей (Dundin999@rambler.ru)

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

Отвечает vitya

Приветствую Вас, Алексей!
На самом деле эти функции не работают с символами, они работают с ASCIIZ строчками. То есть указатель на массив найтов в конце которого стоит 0.
Для этого тебе нужно превратить строчку в PChar, зарезервировать (длинна первой + 1) байтов для второй строчки и вызвать функцию.

Ответ отправлен: 25.02.2003, 13:19
Отправитель: vitya


Отвечает Артём Шегеда

Добрый день, Алексей!

На первый вопрос тебе уже ответили.
По второму вопросу могу порекомендовать справку по DelphiVCL, а именно раздел TGraphicField. В закладке "Methods" есть чудесные методы "LoadFromFile" и "LoadFromStream". Первый заносит данные из файла, второй - из потока. К описаниям этих функций приложены чудесные примеры.
Работай с документацией - и ты станешь экспертом.

Приложение:

Ответ отправлен: 25.02.2003, 11:11
Отправитель: Артём Шегеда


Отвечает Idle Sign

Добрый день, Алексей!
===== Pro bono publico, no bloody panico! =====
Примерно так: CharToOem (ch1, ch2). Параметрами являются источник и приемник.

Ответ отправлен: 25.02.2003, 21:04
Отправитель: Idle Sign


Отвечает baldr

Доброе время суток, Алексей!
2. Насчет картинок...
Во-первых, картинки, MEMO-поля и т.п. - это так называемые BLOB-данные, которые хранятся
чаще всего в отдельных файлах, а не в самой базе. СУБД ссылается на эти файлы и работает
с ними сама, так что тебе про них знать необязательно... Но BLOB-поля могут содержать
любые данные, так что, чаще всего, команды просто загрузить картинку нет. Надо использовать
разные универсальные функции. Я привык работать с SQL-запросами, так что вот тебе кусок
одной моей лабы... Там просто обновляется запись. Я делал так:
Var
Str1:TStream;
...
With Query2 do
With SQL do
Begin
DataSource:=DM2.DataSource1; // Это уже специфика той проги... :)
Clear;
CachedUpdates:=False;
Add('Update Retailers');
Add('Set RtName=:RName, RtAddress=:RAddress, RtTel=:RTel,');
Add('RtPay=:RPay, RtPercent=:RPercent, RtPhoto=:RPhoto, RtComment=:RComment');
Add('Where RetailerID=:RetailerID');
ParamByName('RName').DataType:=ftString;
ParamByName('RName').AsString:=St1;
ParamByName('RAddress').DataType:=ftString;
ParamByName('RAddress').AsString:=St2;
ParamByName('RTel').DataType:=ftString;
ParamByName('RTel').AsString:=St3;
ParamByName('RPay').DataType:=ftCurrency;
ParamByName('RPay').AsCurrency:=D1;
ParamByName('RPercent').DataType:=ftSmallint;
ParamByName('RPercent').AsSmallInt:=I1;
try
MSt:=TMemoryStream.Create;
Image1.Picture.Bitmap.SaveToStream(MSt);
ParamByName('RPhoto').DataType:=ftGraphic;
ParamByName('RPhoto').LoadFromStream(MSt, ftGraphic);
finally
MSt.Free;
end;
ParamByName('RComment').DataType:=ftMemo;
ParamByName('RComment').AsMemo:=St4;
Prepare;
ExecSQL;

Можно как-то и без запросов, но у меня сразу не получилось...


Ответ отправлен: 24.02.2003, 23:10
Отправитель: baldr


Отвечает Илья

Доброе время суток, Алексей!
1.
BOOL OemToChar(
LPCSTR lpszSrc, // string to translate
LPTSTR lpszDst // translated string
);
1-й параметр - исходная строка(буфер) для перевода
2-й параметр - строка(буфер)-приёмник, куда помещается результат
Т.е. можно так OemToChar(s1, s2);
При этом длина строки s2 должна быть не меньше s1.
Можно и обойтись без s2 : OemToChar(s1, s1);
Тогда источник и будет приемником (вопрос с размером сразу отпадает).
Аналогично для CharToOem.
2.
>Хотя бы програмным путём?
А разве можно аппаратным? :)
Для данного поля таблицы должны быть функции LoadFromFile и LoadFromStream для загрузки картинки из потока или из файла. На счет LoadFromFile точно не уверен (а проверять было в лом), по этомо можно сделать так: создаем поток TMemoryStream, загружаем в него файл функцией LoadFromFile (здесь(для потока) она точно есть), и загружаем в поле таблицы, которое должно содержать картинку, содержимое потока. Должно работать. Если что-то не понятно, просим....


Ответ отправлен: 24.02.2003, 23:25
Отправитель: Илья



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

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (33)
C / C++ (25)
Perl (3)
Delphi (17)
Pascal (21)
Basic / VBA (11)
Java / JavaScript (8)
PHP (5)
MySQL / MSSQL (4)
Пользователю
Windows 95/98/Me (33)
Windows NT/2000/XP (25)
"Железо" (28)
Поиск информации (15)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (11)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (4)
КоАП (4)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

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

В избранное