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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

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

Boriss
Статус: Академик
Рейтинг: 2482
∙ повысить рейтинг »
star9491
Статус: Профессионал
Рейтинг: 2391
∙ повысить рейтинг »
Евгений/Genia007/
Статус: Профессионал
Рейтинг: 1109
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Delphi и Lazarus

Номер выпуска:1557
Дата выхода:12.10.2010, 18:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:284 / 195
Вопросов / ответов:4 / 4

Вопрос № 180182: Доброе время суток, уважаемые эксперты! Подскажите пожалуйста книги по delphi 7, рекомендуемые вами к прочтению. Базовое знание delphi имею - т.е. в могу написать простенькую программу, калькулятор простой например. В связи с этим попрошу не...


Вопрос № 180184: Добрый день, Уважаемые эксперты. Нужна помощь моей дочки в программирование на Delphi. Дали такое задание: В SpinEdit вводится число, при нажатие на кнопку "Квадрат" это число возводится в степень до тех пор, пока значение, котор...
Вопрос № 180185: И снова добрый вечер, эксперты. Помогите в написании программы на Delphi. Задание такое: Написать программу поиска Рабина. В Richedit занести текст, а в Edit искомую букву или слово. Найденный символ или слово выделить, а его координаты ото...
Вопрос № 180190: Здравствуйте. Прошу еще помощи. Тестирую свой датчик случайных чисел на независимость. Для этой проверки использую метод вычисления корреляционных моментов (коэффициента корреляции). Берутся пары чисел х0 и х1, х1 и х2 и т.д. и вычис...

Вопрос № 180182:

Доброе время суток, уважаемые эксперты!
Подскажите пожалуйста книги по delphi 7, рекомендуемые вами к прочтению.
Базовое знание delphi имею - т.е. в могу написать простенькую программу, калькулятор простой например.
В связи с этим попрошу не рекомендовать книги для "чайников" =)
Заранее спасибо за помощь!

Отправлен: 06.10.2010, 18:46
Вопрос задал: Даниил Цветков, Студент
Всего ответов: 1
Страница вопроса »


Отвечает Victor Pyrlik, Модератор :
Здравствуйте, Даниил Цветков.

Delphi для профессионалов, что-то типа:

Работа с базами данных в DELPHI. Анатолий Хомоненко, Владимир Гофман
Программирование Win32 API в Delphi Кузан Д., Шапоров В.
Delphi и технология COM Н. Елманова, С. Трепалин, А. Тенцер
Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .Net Архангельский А.
Delphi. Трюки и эффекты А. Чиртик, В. Борисок, Ю. Корвель
Создание компонентов в среде Delphi. Руководство разработчика. Михаил Голованов, Евгений Веселов
Программирование документов и приложений MS Office в Delphi. Василий Корняков


Ну и т.д.
Delphi - это не язык, это просто интегрированная среда позволяющая быстро и удобно разрабатывать приложения для Windows на языке Object Pascal.
так что, изучать надо не Delphi - а технологии: API Windows, COM и т.д.
А в Delphi важны компоненты.. Именно на них и надо обращать в нимание. Хотя, поняв суть - в общем то книги становятся уже не нужны в этом плане (смотрим предпоследний из списка вариант).
Сегодня интернет даст Вам намного больше чем любая книга - большинство из них просто копируют друг друга.

-----
Жизнь игрушка – пока играешь сам..

Ответ отправил: Victor Pyrlik, Модератор
Ответ отправлен: 06.10.2010, 20:02
Номер ответа: 263358
Россия, Екатеринбург
Тел.: 89655089934
ICQ # 490191733
Абонент Skype: stells00

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



    Вопрос № 180184:

    Добрый день, Уважаемые эксперты.
    Нужна помощь моей дочки в программирование на Delphi.
    Дали такое задание:
    В SpinEdit вводится число, при нажатие на кнопку "Квадрат" это число возводится в степень до тех пор, пока значение, которое отображается в SpinEdit не станет превышать 1e1233 (10 в степени 1233). После этого надпись на кнопке изменяется на "Корень" и из значение в SpinEdit начинается извлекаться корень.

    Отправлен: 06.10.2010, 21:45
    Вопрос задал: Kreaman, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Шичко Игорь, Профессионал :
    Здравствуйте, Kreaman.
    Предлагаю Вам следующий код.
    Код и описание в приложении.
    Вопросы пишите в форум.
    Удачи.

    Приложение:

    -----
    Если что-то невозможно сделать сегодня, это совсем не значит, что это невозможно сделать НИКОГДА.

    Ответ отправил: Шичко Игорь, Профессионал
    Ответ отправлен: 06.10.2010, 23:25
    Номер ответа: 263362

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо большое за работу. Очень благодарен за помощь.

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


  • Вопрос № 180185:

    И снова добрый вечер, эксперты.
    Помогите в написании программы на Delphi.
    Задание такое:
    Написать программу поиска Рабина. В Richedit занести текст, а в Edit искомую букву или слово. Найденный символ или слово выделить, а его координаты отобразить в Memo в виде: Строка 1: 13, 17 (где 13 и 17 номер искомого символа).

    Отправлен: 06.10.2010, 22:02
    Вопрос задал: Kreaman, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Шичко Игорь, Профессионал :
    Здравствуйте, Kreaman.
    Предлагаю Вам следующий вариант решения.
    Код и описание в приложении.
    Вопросы пишите в форум.
    Удачи.

    Добавил код с алгоритмом Рабина-Карпа.

    Приложение:

    -----
    Если что-то невозможно сделать сегодня, это совсем не значит, что это невозможно сделать НИКОГДА.

    Ответ отправил: Шичко Игорь, Профессионал
    Ответ отправлен: 07.10.2010, 09:30
    Номер ответа: 263365

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


  • Вопрос № 180190:

    Здравствуйте.
    Прошу еще помощи.

    Тестирую свой датчик случайных чисел на независимость.
    Для этой проверки использую метод вычисления корреляционных моментов (коэффициента корреляции).
    Берутся пары чисел х0 и х1, х1 и х2 и т.д. и вычисляется корреляционный момент:

    (1/n) * Σ (xi – 0,5)(xi+1 – 0,5).


    У меня имеется на форме Memo1 c вещественными числами:
    0,8765
    0,2345
    0,1245
    0,5090
    0,1223
    0,5656
    нужно их сложит по формуле
    (1/n) * Σ (xi – 0,5)(xi+1 – 0,5).


    У меня получилось сложить только 2 первых числа, этот код расположен в приложении

    Отправлен: 07.10.2010, 17:02
    Вопрос задал: novij2011, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает LanK, Профессионал :
    Здравствуйте, novij2011.

    По просьбе Victor Pyrlik, добавляю его ответ (после большого обсуждения в минифоруме):

    novij2011 Ваша функция - вырождающаяся:

    Код:

    procedure TForm1.Button2Click(Sender: TObject);
    var
    n: real;
    i:integer;
    a:string;

    begin
    RichEdit1.Lines.Clear;
    RichEdit1.Lines.Add(Edit1.Text);
    for i:=0 to 50 do
    begin
    n:=Strtofloat(Edit1.Text)*StrTofloat(Edit1.Text);
    { n = x * x -> это стермится к нулю, т.к.}
    Edit2.Text :=floatTostr(n);
    {несмотря на то, что берете только 4 цифры, с каждой итерацией порядок умень шается
    т.е. число становится меньше: 0,1 * 0,1 = 0,01 -> 0.01*0.01 = 0,0001 и т.д.
    на определенном этапе, эти 4 числа будут = 0 т.е. результат стремится к нулю.}
    a:=(Copy(Trim(Edit2.Text),Length(Edit2.Text) div 2,Length(Edit2.Text)) );
    Edit1.Text:='0,'+a;
    RichEdit1.Lines.Add(Edit1.Text);
    end;
    end;


    С учетом Ваших требований... решение Вашей задачи:
    Код:

    unit Unit2;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    Tdata = record // создадим структуру 1 и 2 переменных, будем тут хранить СС
    x1:double ;
    x2:double;
    end;
    TRandMas = array of Tdata; // этот тип - наш динамический массив


    procedure GenRand(var _m:TRandMas; x:double; n:integer); // функция генерации СВ
    function SolveCor(_m:TRandMas):double; // ваша функция подсчета корреляционный момент
    implementation
    //*************** ВАШ ГЕНЕРАТОР ************************************************
    procedure MyRand(_m:TRandMas; x:double; count:integer);
    var
    n: double;
    i,k:integer;
    s:string;

    begin
    k := count div 2;
    if Length(_m) < k then
    SetLength(_m,k);
    n:=x*x;
    for i:=0 to k-1 do
    begin
    s := FloatTostr(n);
    Delete(s,1, Pos(',',s));
    s:= IntToStr(StrToInt(Copy(s, Length(s) div 2, 4))); // тут меленькая хитрость - что бы избавиться от возможных ведущих нулей, преобразуем к integer потом в строку..
    _m[i].x1:=StrToFloatDef('0,'+ s,0);
    n:=_m[i].x1*_m[i].x1;
    s :=FloatToStr(n);
    Delete(s,1, Pos(',',s));
    s:= IntToStr(StrToInt(Copy(s, Length(s) div 2, 4)));
    _m[i].x2:=StrToFloatDef('0,'+s,0);
    n:=_m[i].x2*_m[i].x2;
    end;
    end;
    //******************************************************************************
    procedure GenRand(var _m:TRandMas; // массив переменных
    x:double; // начальное число
    n:integer // количество элементов в массиве
    ); // массив передаем по ссылке, т.е. он измениться в процедуре
    var i:integer;
    begin
    randomize;
    if Length(_m) < n then // если массив меньше требуемого,
    SetLength(_m,n); // то установим необходимый размер
    MyRand(_m, x, n);
    end;
    //******************************************************************************
    function SolveCor(_m:TRandMas):double;
    var i, x:integer;
    t:double;
    begin
    result := 0; / /результат = 0
    x := Length(_m); // получаем количество элементов в массиве
    if(x <= 0) then // если массив пуст
    exit; // то ввыходим - считать нечего, результат = 0
    for i:= 0 to x-1 do
    begin
    t := (_m[i].x2 - 0.5); // получаем знаменатель
    if(t <> 0) then // если он не = 0 (на 0 делить - будет ошибка)
    result := result + (_m[i].x1 - 0.5) / (_m[i].x2 - 0.5); // то делим и суммируем
    end;
    result := result / x // поделили сумму на количество элементов взяли среднне
    end;
    //******************************************************************************

    end.



    модуль формы:

    Код:

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtr ls, ComCtrls;

    type
    TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    RichEdit1: TRichEdit;
    Button2: TButton;
    Edit2: TEdit;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    private

    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    uses Unit2;

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var m:TRandMas; // это переменная на динамический массив
    var i:integer;
    begin
    Memo1.Lines.Clear;
    GenRand(m, StrToFloatDef(Edit2.Text,0), StrToIntDef(Edit1.Text,0));
    for i:= 0 to (Length(m) div 2)-1 do
    Memo1.Lines.Add(Format('%-4d: %.4f - %.4f',[i,m[i].x1,m[i].x2]));
    Label2.Caption := Format('корреляционный момент: %.3f',[SolveCor(m)]);
    end;
    end.


    А вообще, как пр авило используют для первичной генерации – текущее время..
    замените вызов функции как показано ниже, а Edit2 можно вообще не использовать :

    Код:

    procedure TForm1.Button1Click(Sender: TObject);
    var m:TRandMas; // это переменная на динамический массив
    i:integer;
    begin
    Memo1.Lines.Clear;
    GenRand(m, now, StrToIntDef(Edit1.Text,0));
    for i:= 0 to (Length(m) div 2)-1 do
    Memo1.Lines.Add(Format('%-4d: %.4f - %.4f',[i,m[i].x1,m[i].x2]));
    Label2.Caption := Format('корреляционный момент: %.3f',[SolveCor(m)]);
    end;


    Вы можете cкачать программу (с исходниками) на Delphi.
    -----
    Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!

    Ответ отправил: LanK, Профессионал
    Ответ отправлен: 08.10.2010, 15:51
    Номер ответа: 263388

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



    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

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

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

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

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

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

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


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.22 от 10.10.2010

    В избранное