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

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


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

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

Выпуск № 858
от 04.07.2007, 21:05

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


Вопрос № 93297: Необходимо реализовать следующее: Пользователь загрузил рисуонк в TImage. Кликнул по нему и понёс мышкой в нужное место. Нажал опять на имейдж когда тот оказался в нужной точке и имейдж пересталд идити за мышкой. как реализовать?...
Вопрос № 93307: Здравствуйте уважаемые эксперты. Подскажите пожалуйста, как проверить переменную s ( var s:string ) является ли она числом. Пробовал пользоваться procedure Val(S:string; V:real; Code: Integer); , но не получаесять проверять большие ч...
Вопрос № 93313: Здравствуйте, уважаемые Эксперты! Дайте, пожалуйста, исходник получения текста web страницы. С помощью Delphi7 стандартными компонентами. Как я давал только что на вопрос <a href=http://rusfaq.ru?Step=info&Action=Question&ID...
Вопрос № 93343: Здравствуйте уважаемые эксперты. Подскажите пожалуйста как сохранить style (Курсив, жирный ...) шрифта в ini файле. Как изменить эти параметры не через диалоговое окно FontDialog....
Вопрос № 93349: Здравствуйте всем. Вопрос следующий: Есть ADSL-подключение к инету с динамическим IP. Иногда происходит разрыв соединения и, соответственно, меняется IP. Как программно узнать IP-адрес интернет-соединения? Это мне нужно для удаленного администрирован...

Вопрос № 93.297
Необходимо реализовать следующее:
Пользователь загрузил рисуонк в TImage. Кликнул по нему и понёс мышкой в нужное место. Нажал опять на имейдж когда тот оказался в нужной точке и имейдж пересталд идити за мышкой. как реализовать?
Отправлен: 29.06.2007, 07:59
Вопрос задал: Тепленёв Максим Витальевич 2 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: LanK
Здравствуйте, Тепленёв Максим Витальевич 2!

Таких примеров множество как и способов... в приложении ПОЛНЫЙ типичный код.

Приложение:

---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!

Ответ отправил: LanK (статус: Студент)
Ответ отправлен: 29.06.2007, 08:37

Отвечает: Василенко Алексей Васильевич
Здравствуйте, Тепленёв Максим Витальевич 2!
один из вариантов решения

Переменные
move : boolean;
признак того, что изображение передвигается

top_s : integer;
left_s : intreger:
относительное положение мышки и верхней точки Имаджа.

процедура FormCreate устанавливает начальные значения переменных

процедура Image1MouseDown начинает перемещение
процедура Image1MouseMove выполняет движение
процедура Image1MouseUp заканчивает движение
т.е. Движение происходит при зажатой левой кнопке

процедура Image1ContextPopup загружает изображение через OpenPictureDialog1.

в приложении полный Unit1.pas

Приложение:

---------
Человек развивается только преодолевая трудности

Ответ отправил: Василенко Алексей Васильевич (статус: 2-ой класс)
Ответ отправлен: 30.06.2007, 16:32


Вопрос № 93.307
Здравствуйте уважаемые эксперты. Подскажите пожалуйста,
как проверить переменную s ( var s:string ) является ли она числом.

Пробовал пользоваться procedure Val(S:string; V:real; Code: Integer); ,
но не получаесять проверять большие чила.
Отправлен: 29.06.2007, 10:05
Вопрос задал: Левадный Тимур Русланович (статус: 1-ый класс)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Omickron
Здравствуйте, Левадный Тимур Русланович!

Попробуйте использовать блоки try-except-end.

Приложение:

Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 29.06.2007, 10:09
Оценка за ответ: 5
Комментарий оценки:
Спасибо, всё получилось

Отвечает: BlackRaider
Здравствуйте, Левадный Тимур Русланович!

Ответ удален и помещен для обсуждения на форум rusfaq.ru, т.к. функция приведенная в приложении будет давать ошибочные результаты:
Удаленные ответы для обсуждения
Эксперт sir henry
Ответ отправил: BlackRaider (статус: 1-ый класс)
Ответ отправлен: 29.06.2007, 10:13
Оценка за ответ: 3
Комментарий оценки:
Я не понял, что такое trim, но я понял ход ваших мыслей, и по моему вы не учли что проверяемая переменная sstr моюет быть к примеру такой: 123,,0
Все символы из сета, но значение не корректно.

Отвечает: Igor_
Здравствуйте, Левадный Тимур Русланович!

Ответ удален как не соответствующий названию рассылки и помещен для обсуждения на форум rusfaq.ru:
Удаленные ответы для обсуждения
Эксперт sir henry
Ответ отправил: Igor_ (статус: 3-ий класс)
Ответ отправлен: 29.06.2007, 10:29
Оценка за ответ: 4
Комментарий оценки:
К сожалению ничего не понял но всё равно спасибо

Отвечает: Sandy
Здравствуйте, Левадный Тимур Русланович!

Ответ удален как ошибочный и помещен для обсуждения на форум rusfaq.ru:
Удаленные ответы для обсуждения
Эксперт sir henry
Ответ отправил: Sandy (статус: 6-ой класс)
Ответ отправлен: 29.06.2007, 11:00

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Левадный Тимур Русланович!
Надо всего лишь убедиться, что строка состоит только из цифр и не более, чем одного десятичного разделителя. Символ используемый в системе в качестве десятичного разделителя, хранится в переменной DecimalSeparator, которая определяется в SysUtils.
Можно еще проверять, чтобы вначале не было нулей и не считать числами сторки типа "007" =)

А так код в приложении.

Приложение:

---------
Не узнаешь - не попробуешь.

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 29.06.2007, 13:18
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ваш ответ. Интересная информация о DecimalSeparator. Но всеже я воспользуюсь ответом Omickron'а.

Отвечает: Esi
Здравствуйте, Левадный Тимур Русланович!
Нужно сделать проверку, например сравнить с нулём.
try
if strtoint(s)>0 then label1.text:='s-число';
except
label1.text:='s не является числом';
end;
Ответ отправил: Esi (статус: 2-ой класс)
Ответ отправлен: 29.06.2007, 19:03
Оценка за ответ: 4
Комментарий оценки:
Да, но число может быть и отицательным.

Отвечает: Louken
Здравствуйте, Левадный Тимур Русланович!

Мне вообще непонятно, почему у Вас не получается с Val, может быть что то просто делаете не так, ведь функция StrToInt, преобразует число именно с помощью него:

function StrToInt(const S: string): Integer;
var E: Integer;
begin
Val(S, Result, E);
if E <> 0 then {Здесь вызывается исключение (ошибка)}
end;

Если уж Вас устроил ответ Omickron'а, то предложу свой вариант, как я считаю более правильный.
Нет необходимости замарачиваться и использовать блоки try-except-end, достаточно написать так:
if TryStrToInt(s,i) then ShowMessage ('Число') else ShowMessage ('Не число');

Если Вам действительно нужны большие числа, то используйте тип int64, в нем доступны 19 знаков (если правильно посчитал), тогда Вам понадобиться функция TryStrToInt64.
Если Вам нужны вещественные числа (дробные), то используйте TryStrToFloat.

Главное помните, что если Вы пишите:
if TryStrToInt64(s,i) then {...},
то переменная i должна быть описана именно так:
var i: int64;
тип integer здесь не подойдет.
Для функции TryStrToFloat, нужна переменная типа Extended.
Удачи.
Ответ отправил: Louken (статус: 9-ый класс)
Ответ отправлен: 29.06.2007, 22:05
Оценка за ответ: 5
Комментарий оценки:
Извиняюсь, длинная строк с числом была боьшая а не само число. В ответе Omickron'а я взял блоки try-except-end и заменил StrToInt на floattostr. Спасибо за ответ.

Отвечает: Василенко Алексей Васильевич
Здравствуйте, Левадный Тимур Русланович!
Если в строке записано десятичное число, то в строке кроме символов 0,1,2,3,4,5,6,7,8,9 и "," больше никаких символов не будет. исключение составит пробел как разделитель разрядов, что нежелательно.
Мое предложение - написать функцию посимвольной проверки строки.
---------
Человек развивается только преодолевая трудности
Ответ отправил: Василенко Алексей Васильевич (статус: 2-ой класс)
Ответ отправлен: 30.06.2007, 15:19
Оценка за ответ: 3


Вопрос № 93.313
Здравствуйте, уважаемые Эксперты!

Дайте, пожалуйста, исходник получения текста web страницы.
С помощью Delphi7 стандартными компонентами.

Как я давал только что на вопрос
93297

тестовая страница http://rusfaq.ru/index.php (например я точно не знаю какая у rusfaq но это не важно) мне ее потом надо будет обработать как тескт - вытащить ОДНО значение.

Спасибо!
Отправлен: 29.06.2007, 10:42
Вопрос задал: LanK (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Omickron
Здравствуйте, LanK!

Вариантов решения задачи много. Я, в своё время использовал компоненты Indy. В частности, TIdHTTP.
Задаёте значения хоста, порта (80, по умолчанию), разрешаете cookies (AllowCookies:=true), если нужно поддерживать сессию, и пользуетесь методами GET и POST для отправки соответствующих запросов.

Для передачи данных в POST используется массив строк TStringList.

Приложение:

Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 29.06.2007, 10:52

Отвечает: Sattar
Здравствуйте, LanK!
Код в приложении взят с http:// swissdelphicenter.ch/

Приложение:

---------
Programming is like sex, one mistake and you have to support it for the rest of your life.

Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 29.06.2007, 18:15


Вопрос № 93.343
Здравствуйте уважаемые эксперты. Подскажите пожалуйста как сохранить style (Курсив, жирный ...) шрифта в ini файле. Как изменить эти параметры не через диалоговое окно FontDialog.
Отправлен: 29.06.2007, 14:17
Вопрос задал: Левадный Тимур Русланович (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Левадный Тимур Русланович!
ini-файл поддерживает стандартный набор данных.
Поэтому вы можете
  • создать свою процедуру для этого типа
  • Разбить стиль на несколько переменных стандартного типа
Для второго случая можно либо создать 4 булевских переменных, либо одну целого типа и использовать ее как массив битовых флагов.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 29.06.2007, 16:01
Оценка за ответ: 5
Комментарий оценки:
Расскажите по подробнее как разбить стиль на 4 булевских перемынные.

Отвечает: ~Steep~
Здравствуйте, Левадный Тимур Русланович!

Чтобы сохранять стиль шрифта - нужно сохранять каждый его параметр отдельно:
Шрифт, Размер, Цвет и тд..

Не совсем понял вторую часть вопроса...
Если изменять в самой программе пользователю - то соотвественно придется делать такой диалог самому..
Если вы програмно хотите изменить - то так же меняете каждый параметр
например: font.color := ...; font.size := ..; и тд..
---------
Все всегда делается к Лучшему!
Ответ отправил: ~Steep~ (статус: 9-ый класс)
Ответ отправлен: 29.06.2007, 16:03
Оценка за ответ: 4
Комментарий оценки:
Шрифт, размер, цвет я изменил, а вот курсиы, жирный, подчёркнутый, зачёрктнутый нет.

Отвечает: Louken
Здравствуйте, Левадный Тимур Русланович!

Свойство Font.Style - это обычное множество и все действия над множествами применимы и к Font.Style.

Чтобы сделать шрифт жирным, напишите такую строчку:
Font.Style:=Font.Style+[fsBold];
Т.е. здесь к Font.Style добавляется флаг fsBold.
Если написать:
Font.Style:=[fsBold];
То шрифт будет жирным, но все остальные флаги (fsItalic, fsUnderline, fsStrikeOut) будут сняты со шрифта.
Можно вместо fsBold написать: fsItalic, fsUnderline, fsStrikeOut.
Можно и комбинировать:
Font.Style:=Font.Style+[fsBold, fsItalic];
Чтобы сделать шрифт не жирным:
Font.Style:=Font.Style-[fsBold];

Предлагаю Вам две процедуры для сохранения и загрузки параметров шрифта из ini файла (в приложении).
Чтобы их использовать:
LoadFont(ExtractFilePath(Application.ExeName)+'Config.ini', Form1.Font);
SaveFont(ExtractFilePath(Application.ExeName)+'Config.ini', Form1.Font);
где первый параметр - имя файла в той же директории, что и программа.
Удачи.

Приложение:

Ответ отправил: Louken (статус: 9-ый класс)
Ответ отправлен: 29.06.2007, 20:45
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо (6 бы поставил :)


Вопрос № 93.349
Здравствуйте всем. Вопрос следующий: Есть ADSL-подключение к инету с динамическим IP. Иногда происходит разрыв соединения и, соответственно, меняется IP. Как программно узнать IP-адрес интернет-соединения? Это мне нужно для удаленного администрирования компа, на котором Инет с динамическим IP.
Отправлен: 29.06.2007, 15:40
Вопрос задал: Idens (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Idens!
Вот несколько статей:
http://delphiworld.narod.ru/base/get_own_ip.html
http://delphiworld.narod.ru/base/get_own_ip2.html
http://delphiworld.narod.ru/base/get_my_ip.html
В чем вам будет проще разобраться, тот и используйте.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 29.06.2007, 15:57

Отвечает: Василенко Алексей Васильевич
Здравствуйте, Idens!

Ответ удален как неверный и помещен на форум
Удаленные ответы для обсуждения
Эксперт sir henry
---------
Человек развивается только преодолевая трудности
Ответ отправил: Василенко Алексей Васильевич (статус: 2-ой класс)
Ответ отправлен: 30.06.2007, 14:43


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное