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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Сарумян
Статус: Практикант
Рейтинг: 505
∙ повысить рейтинг >>
Jimhucksly
Статус: 5-й класс
Рейтинг: 434
∙ повысить рейтинг >>
Тимошенко Дмитрий
Статус: Студент
Рейтинг: 341
∙ повысить рейтинг >>

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

Выпуск № 1411 от 28.07.2009, 13:05
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 564, экспертов - 196
В номере: вопросов - 2, ответов - 4

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 170696: Здравствуйте уважаемые эксперты!!! Подскажите пожалуйста, есть ли в Delphi 7 Enterprise, компонент, с помощью которого можно реализовать на форме меню с вкладками, что-то похожее на панель с компонентами в среде Delphi. Если есть такое - под...


Вопрос № 170708: Здравствуйте уважаемые эксперты! Помогите пожалуйста с такой задачкой, проект не нужен, главное код :) Есть строка TEMP = 159160161162163164165166167 и т.д. и переменная Key целого типа, которая хранит число, например 12, мне нужно каждую т...

Вопрос № 170696:

Здравствуйте уважаемые эксперты!!! Подскажите пожалуйста,
есть ли в Delphi 7 Enterprise, компонент, с помощью которого
можно реализовать на форме меню с вкладками, что-то похожее на
панель с компонентами в среде Delphi. Если есть такое - подскажите пожалуйста как
работать с компонентом. Спасибо!

Отправлен: 22.07.2009, 15:42
Вопрос задал: Николай // Programmator , Студент
Всего ответов: 2
Страница вопроса >>


Отвечает Александр Романов [Alexo], 5-й класс :
Здравствуйте, Николай // Programmator .

Это вроде обычный TPageControl на вкладке Win32.
Для создания новой вкладки в дизайнере -> Правой кнопкой мыши на компоненте -> New Page
Для создания в Run-Time код в приложении

Приложение:

Ответ отправил: Александр Романов [Alexo], 5-й класс
Ответ отправлен: 22.07.2009, 17:07

Оценка ответа: 5

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252483 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает VolRus, 5-й класс :
    Здравствуйте, Николай // Programmator .
    Немного усовершенствовал ответ Александр Романов [Alexo]
    Добавил динамическое создание кнопок.

    uses
    ..., ComCtrls, Buttons;
    ...
    public
    procedure SpeedButtonClick(Sender: TObject);
    end;
    ...
    procedure TForm1.Button1Click(Sender: TObject);
    var
    tab : TTabSheet;
    i : integer;
    begin
    tab:=TTabSheet.Create(Form1);
    tab.PageControl:=PageControl1;
    tab.Caption:='New';

    for i:=0 to 4 do //количество кнопок на закладке
    with TSpeedButton.Create(tab) do
    begin
    parent:=tab;//присваиваем родителя кнопке
    left:=width*i;
    PageControl1.Tag:=PageControl1.Tag+1;//количество кнопок увеличиваем на единицу
    Name:='SpeedButton'+inttostr(PageControl1.Tag); //называем кнопку
    caption:=inttostr(PageControl1.Tag);//надпись на кнопке
    OnClick:=SpeedButtonClick;//присваиваем событие
    end;
    end;

    //обработка нажатия на кнопку
    procedure TForm1.SpeedButtonClick(Sender: TObject);
    begin
    if (Sender is TSpeedButton) then
    form1.Caption:=TSpeedButton(Sender).Name;//получаем имя нажатой кнопки
    end;

    Ответ отправил: VolRus, 5-й класс
    Ответ отправлен: 22.07.2009, 17:48

    Оценка ответа: 5

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252484 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 170708:

    Здравствуйте уважаемые эксперты! Помогите пожалуйста с такой задачкой, проект не нужен, главное код :)

    Есть строка TEMP = 159160161162163164165166167 и т.д. и переменная Key целого типа, которая хранит
    число, например 12, мне нужно каждую тройку символов начинаня с 159 и т.д. перевести в целый тип и прибавить к
    этому целому числу значение Key, т.е. 12 и все это потом сохранит в новую строку или же обратно в TEMP (нет разницы).

    Например если на входе строка: 159160161, то на выходе должно получится 171172173...

    Я попробовал сделать так:

    //...
    For I := 1 to Length(Temp) do
    begin
    CurrSymb := Copy(Temp, K, (K + 2));
    Temp := Temp + IntToStr(StrToInt(CurrSymb) + Key);
    K := K + 3 ;
    end;
    //...

    На первый взгляд должно работать, но не работает. В результате ошибка конвертации.
    Пробовал с помощью дополнительных переменных, хоть и без ошибок, но строку тогда получаю с "мусором".
    Пом огите пожалуйста:)

    Отправлен: 22.07.2009, 22:38
    Вопрос задал: Николай // Programmator , Студент
    Всего ответов: 2
    Страница вопроса >>


    Отвечает Gh0stik, Модератор :
    Здравствуйте, Николай // Programmator .

    Начнем с самого главного - цикла (For I := 1 to Length(Temp) do), сколько он раз выполнится все для той же самой строки 159160161?

    Легко посчитать, что выполниться он ровно 9 раз. А теперь посчитайте значение переменной k, при i=6... Очевидно, что ее значение будет равно k+15, а это заведомо больше длины исходной строки. Подумайте, что будет храниться в переменной CurrSymb?
    Использовать саму же переменную Temp для хранения результата можно но не так быстро!!!
    Поскольку в строке CurrSymb := Copy(Temp, K, (K + 2)); Вы используете при каждом последующем вызове цикла уже иную строку Temp - присмотритесь внимательно!

    Посему рекомендую использовать для таких нужд цикл с предусловием (while), вот один из возможных вариантов:
    Код:
    var NewTemp:string;
    ....
    k:=1;
    NewTemp :='';
    while k+2<=length(temp) do begin
    CurrSymb := Copy(Temp, k, 3);
    NewTemp := NewTemp + IntToStr(StrToInt(CurrSymb) + Key);
    k := k + 3 ;
    end;

    И опять же НЕ забывайте, что данный код актуален для строк длина которых кратна 3.


    Good Luck! Украина, Славянск
    Организация: Славянский государственный педагогический университет (Кафедра алгебры)
    Адрес сайта: http://gh0stik.rusfaq.ru/
    ICQ # 289363162

    -----
    Непечатный жаргон - это тот язык, которым решительно все программисты владеют в совершенстве.

    Ответ отправил: Gh0stik, Модератор
    Ответ отправлен: 23.07.2009, 00:12

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо Вам!!! Код я чесно говоря набирал на " быструю руку", вот и недосмотрел :) Спасибо Вам ещё раз!!!!!!

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252504 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает VolRus, 5-й класс :
    Здравствуйте, Николай // Programmator .
    В данном примере как мне кажется есть небольшая не точность.
    Если в первый из трех символов 0 то тогда приведенный код будет возвращать строку короче на один символ для каждой строки из трех символов.
    Например если '059' --> 59 если '009' --> 9

    Нужно использовать вместо:
    NewTemp := NewTemp + IntToStr(StrToInt(CurrSymb) + Key);
    так
    NewTemp := NewTemp + Format('%.3d', [StrToIntDef(CurrSymb,0) + Key ]);

    Ответ отправил: VolRus, 5-й класс
    Ответ отправлен: 23.07.2009, 10:07

    Оценка ответа: 5

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252512 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.6 от 21.07.2009

    В избранное