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

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


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

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

Выпуск № 739
от 17.02.2007, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 440, Экспертов: 78
В номере:Вопросов: 5, Ответов: 11


Вопрос № 75206: Здравствуйте, уважаемые эксперты! Подскажите как в TMEMO отменить перенос строки. То есть чтобы всё писалось в одну строчку. Зарание спасибо....
Вопрос № 75244: Здравствуйте! Посоветуйте статью про работу со строками. Использую Turbo Delphi 2006. Наверняка есть какие-то удобные функции. К примеру как разобрать строку вида дд.мм.гггг? Нужно проверить на то, верно ли введена дата. Извращаться с копиров...
Вопрос № 75258: Почему привидённый ниже пример не работает. В программне переменной oper2 я присваиваю значение 0 а переменной oper1 1 для примера а программа все равно вываливается с ошибкой...
Вопрос № 75304: Подскажите какие-нибудь книги для программирования типа клиент-сервер....
Вопрос № 75354: Здраствуйте! Подскажите пожалуйста можно ли такое сделать одним запросом и если да то как? В таблице четыре столбца Уник_Индификатор_Металла,Метал,Было,Пришло,Ушло,Осталось. Что бы в "Было" соответствующего металла записывала...

Вопрос № 75.206
Здравствуйте, уважаемые эксперты!
Подскажите как в TMEMO отменить перенос строки. То есть чтобы всё писалось в одну строчку.
Зарание спасибо.
Отправлен: 11.02.2007, 14:04
Вопрос задал: Артём1983 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Ерёмин Андрей
Здравствуйте, Артём1983!
Свойство WantReturns отвечает за то, разрешено ли переходить на новую строку при вводе текста. Установите это свойство в False и нажатием Enter на новую строку перейти будет нельзя. Чтобы совсем запретить этот переход, добавьте обработчик события OnChange:
procedure TForm1.Memo1Change(Sender: TObject);
Var CP: Integer;
begin
CP:=Memo1.SelStart;
Memo1.Text:=AnsiReplaceText(Memo1.Text,Chr(13)+Chr(10),'');
Memo1.SelStart:=CP;
end;

В uses нужно подключить модуль StrUtils. Желаю удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 11.02.2007, 14:16

Отвечает: Базанов Иван Александрович
Здравствуйте, Артём1983!
Установи свойство WordWrap в false. Это предотвратит разбиение на строки, но только если ты сам не вводишь переводы строка.
Чтобы запретить и это (если вдруг нужно) Установи свойство WantReturns в false. Правда тогда поведение Memo не будет отличаться от TEdit
---------
Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 4-ый класс)
Ответ отправлен: 11.02.2007, 15:44

Отвечает: W@NDeReR
Здравствуйте, Артём1983!
Установить свойство ScrollBar в значение ssHorizontal появиться горизонтальная полоса прокрутки и текст будет писаться в строку.
Ответ отправил: W@NDeReR (статус: 2-ой класс)
Ответ отправлен: 11.02.2007, 19:31


Вопрос № 75.244
Здравствуйте!
Посоветуйте статью про работу со строками. Использую Turbo Delphi 2006. Наверняка есть какие-то удобные функции.
К примеру как разобрать строку вида дд.мм.гггг? Нужно проверить на то, верно ли введена дата. Извращаться с копированием каждой части не хочется.
Как проверить содержит-ли строка только цифры?
Есть-ли что-то вроде sprintf наоборот? Чтобы разделять строку на подстроки?
На PHP так удобно всё это решается, а тут начал делать и встал на месте.
Отправлен: 11.02.2007, 18:40
Вопрос задал: Yadovit (статус: 3-ий класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Yadovit!
Хотя функций для работы со строками в Дельфи довольно много, но они только общего характера, такой же как и сам язык дельфи. Например объединение строк, поиск подстроки, убрать пробелы, конвертирование из строки в другие типы данных и наоборот. В инете, соответственно, есть статьи по работе со строками только как часть какого-то другого материала. Конкретно посвященных строкам, кроме как простого списка функций, такого нет.
Могу посоветовать книгу Фаронов "Дельфи. Учебный курс". Там есть несколько разделов посвященных строкам. Однако не ждите, что Вы получите где-либо потрясающие откровения по работе со строками. :)
В Вашем случае с датой, можно ее правильность проверить преобразовав строку с датой в тип даты:
StrToDate('дд.мм.гггг')
в случае если в строке даты содержится ошибка, то при преобразовании будет выдано исключение, поэтому строку преобразования нужно заключить в Try .. Exept.
Можно выбрать подстроку из строки с помощью функций:
AnsiLeftStr(), AnsiMidStr(), AnsiRightStr() - выделение левой, средней, правой части строки.
Прочитайте хелп по модулю StrUtils.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 11.02.2007, 19:36
Оценка за ответ: 5

Отвечает: Rusland
Здравствуйте, Yadovit!
Рекомендую использовать регулярные выражения. Есть компонент TRegExpr - основан на регулярных выражениях Perl (в PHP аналогично). Он решит все проблемы со строками. Официальный сайт http://www.regexpstudio.com/RU/TRegExpr/TRegExpr.html (в поставку входят Demo-примеры)
Ответ отправил: Rusland (статус: Профессионал)
Россия, Казань
Адрес: Мой адрес не дом и не улица, мой адрес советский союз
WWW: Логотипы для сотовых телефонов
----
Ответ отправлен: 12.02.2007, 11:45
Оценка за ответ: 5

Отвечает: Синельников Сергей
Здравствуйте, Yadovit!

Остается добавить, что сконвертировать строку в дату, одновременно проверяя на корректность, можно и не вызывая исключений. Есть функция

function TryStrToDate(const S: string; out Value: TDateTime): Boolean;

в случае правильной даты возвращает True, а дату в параметре Value.
Ответ отправил: Синельников Сергей (статус: 3-ий класс)
Ответ отправлен: 13.02.2007, 07:35
Оценка за ответ: 5


Вопрос № 75.258
Почему привидённый ниже пример не работает. В программне переменной oper2 я присваиваю значение 0 а переменной oper1 1 для примера а программа все равно вываливается с ошибкой

Приложение:

Отправлен: 11.02.2007, 20:06
Вопрос задал: Артём1983 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: monah
Здравствуйте, Артём1983!
Дело в том, что по умолчанию Делфи перехватывает исключительные ситуации.
Зайдите в меню "Tools/Debugger Options". Вкладка Language Exception. Снимите флажек Stop on Delphi Exception.
---------
festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 11.02.2007, 20:13
Оценка за ответ: 5
Комментарий оценки:
В форуме я уже говорил. Бальшое пасибо. Да и ещё раз скажу Большое спасибо. Очень быстрый ответ.

Отвечает: Химяк Виктор Васильевич
Здравствуйте, Артём1983!
ShowMessage('e'); Убери первую .
Ответ отправил: Химяк Виктор Васильевич (статус: 3-ий класс)
Ответ отправлен: 11.02.2007, 22:27
Оценка за ответ: 3
Комментарий оценки:
У меня в делфи всё было нормально я имею в виду showmeeage просто когда вставил код в форму то ещё появились а убирать я их не стал.


Вопрос № 75.304
Подскажите какие-нибудь книги для программирования типа клиент-сервер.
Отправлен: 12.02.2007, 02:18
Вопрос задал: Костенко Игорь Викторович (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Химяк Виктор Васильевич
Здравствуйте, Костенко Игорь Викторович!
Вы не указали для какого сервера.
Для InterBase, FireBird, Yaffil - "Мир InterBase",
Сайт этой книги, там же маса полезных статей и т.д.
http://www.interbase-world.com/ru/
Ответ отправил: Химяк Виктор Васильевич (статус: 3-ий класс)
Ответ отправлен: 12.02.2007, 19:27
Оценка за ответ: 5


Вопрос № 75.354
Здраствуйте!
Подскажите пожалуйста можно ли такое сделать одним запросом и если да то как?
В таблице четыре столбца Уник_Индификатор_Металла,Метал,Было,Пришло,Ушло,Осталось.
Что бы в "Было" соответствующего металла записывалась сумма "Пришло+Осталось" этого же маталла.
Отправлен: 12.02.2007, 11:54
Вопрос задал: chikanok (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Архангельский Андрей Германович
Здравствуйте, chikanok!

Если по всем то:
Update Table Set Было=Пришло+Осталось

ЕСли по конкретному то:
Update Table Set Было=Пришло+Осталось
where Уник_Индификатор_Метала=...
---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 12.02.2007, 12:03
Оценка за ответ: 5

Отвечает: Igor_
Здравствуйте, chikanok!

Такой запрос написать очень легко, только мне кажется, что у Вас логика хромает..
Не совсем понятно, каким образом это все будет работать.

Но, в общем, конечно, вопрос состоял не в этом..
Ответ на вопрос:

Это обновление ВСЕХ записей в таблице:

update Таблица_про_металл set
Было = Пришло + Осталось;

Если нужно бновить какой-то конкретный:

update Таблица_про_металл set
Было = Пришло + Осталось
where
Уник_Индификатор_Металла = a;

Нужно обновить несколько
update Таблица_про_металл set
Было = Пришло + Осталось
where
Уник_Индификатор_Металла in(a, b, c);
Ответ отправил: Igor_ (статус: 1-ый класс)
Ответ отправлен: 12.02.2007, 12:06
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное