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

Интернет для Delphi-программиста


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

Интернет для Delphi программиста.

Выпуск : № 37


Здравствуйте уважаемые подписчики рассылки "Интернет для Delphi программиста". Данная рассылка предназначена для всех кого интересует Delphi, здесь будут выкладываться ссылки на различные ресурсы интернета так или иначе связанные с Delphi: книги, исходники, программы... Изучайте Delphi один из лучших языков программирования!!!


ЗАДАТЬ ВОПРОС :

Правила рассылки: 
1. Не присылайте ответов на вопросы типа "да, нет".  
2. Если отвечаешь на вопрос - то отвечай подробно с примерами (желательно с исходником примера).
3. Тема вопросов - программирование на Delphi.
Внимание авторам: - Я не указываю ваши адреса из-за спама, но кто хочет, чтобы его email был - пишите, иначе только имя(ник).
Отправить вопрос


Новые вопросы.


Вопрос № 90 задаёт: Слава Ответить  
Подскажите, пожалуйста, как объявлять свои собственные типы данных и работать с ними?
Вопрос № 91 задаёт: Eugene  Ответить
Такой вопрос: как организовать поиск в ListBox. Нужно также, как и в Блокноте - Найти и Найти далее.
Заранее спасибо.

Ответы.

Вопрос № 80 задаёт: source Ответить 
Помогите разобраться плиз. ЧТо-то у меня не работает. Чувствую, что неправильно проверяю найден-ли компонент.
var
i:Integer;
s:String;
begin
for i:=0 to 100 do
  begin
    if TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient'))<>nil then 
 // Если компонент найден, то
      begin
        while TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient')).Connected do 
 // пока он подключен
          begin
            // cчитываем все данные в переменную s
            TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient')).ReadLn(s);
            // отображаем значение переменной в Memo
            TFatMemo(FindComponent(Irc_PageControl.Pages[i].Name+'_FatMemo')).Lines.Add(s); 
          end;
      end;
  end;
end;
Происходит ошибка при выполнении программы "List index out of bounds (5)" - не найден компонент, когда перебор дошел до 5 - его на самом деле нет, но он может там появиться позже
Может кто другой алгоритм посоветует? Опишите его плиз, а то мои прямые извилины сегодня не осилят логического мышления.
Отвечает: СПУ 
Просто нет страницы Irc_PageControl.Pages[i]
Вопрос № 83 задаёт:  Дмитрий Шаравьёв Ответить
Здравствуйте! Кто работал с Kylix'ом, подскажите! В 3-м под Mandrake 10.0, 10.1, 10.2 устанавливается, запускается, создается форма, все нормально. Отправляю на выполнение - Kylix виснет и висит долго (я ждал час). Спасибо.
Отвечает: СПУ 
Нужен патч k3fix. Или пересобирать libc
Вопрос № 84 задаёт: Ольга Ответить 
Мне нужен компонент MNSMTP из закладки FastNet. На моей версии Delphi 7 нет такой закладки. Где его взять?
Спасибо.
Отвечает: Евгений http://decoding.narod.ru 
В Delphi7 FastNet есть, но не установлен.
Дериктория пакета:
%Delphi7%\Bin\dclisp70.bpl
Юнит для палитры FastNet находится в:
%Delphi7%\Ocx\Isp\Isp3.pas
Ну а для полного счастья можешь скачать последнюю версию:
http://www.netmastersllc.com/home/
или
http://naf1971.narod.ru/delphi.html
Отвечает: Владимир 
Уважаемая Ольга!
Переустановите Delphi, но установите теперь его полностью.
Отвечает: СПУ 
Delphi 7 использует Indy - ldSMTP
Вопрос № 85 задаёт: Eugene Ответить 
Здравствуйте!
У меня такой вопрос. Есть на форме 6 Editor'ов. В пять из них юзер вводит числа, а в шестом, при щелчке на кнопке выводится ответ. Т.е. программа берет эти числа и выдает в шестой Editor ответ по формуле ((Edit1 * Edit2 * Edit3) - Edit4) / Edit5. Как все это осуществить?
Заранее спасибо!
Отвечает: Евгений http://decoding.narod.ru 
Edit6.Text:=FloatToStr( ( ( StrToFloat( Edit1.Text ) *
                            StrToFloat( Edit2.Text ) *
                            StrToFloat( Edit3.Text ) ) -
                            StrToFloat( Edit4.Text ) ) /
                            StrToFloat( Edit5.Text ) );
Отвечает: Кама 
Edit6.Text := ((StrToIntDef(Edit1.Text, 0) * (StrToIntDef(Edit2.Text, 0) * (StrToIntDef(Edit3.Text, 0)) - (StrToIntDef(Edit4.Text, 0)) / (StrToIntDef(Edit5.Text, 1);
Отвечает: TopGun
Если есть уверенность в том, что в Edit'ах будут только числа, то
можно сделать при помощи использования функции StrToFloat - эта
функция переводит число из строкового представления в формат Extended. То есть примерно так:
StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text) + StrToFloat(Edit3.Text)
и так далее.
Отвечает: #One 
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Edit6.Text := FloatToStr(((StrToFloat(Edit1.Text) *
StrToFloat(Edit2.Text) * StrToFloat(Edit3.Text)) - StrToFloat(Edit4.Text)) /
StrToFloat(Edit5.Text))
end;

Проверку не забудь сделать в свойстве Edit1-5.Text на пустую строку, отсутствие символов и корректный DecimalSeparator.

Отвечает: Андрей Германович 
А почему не воспользоваться событием onChange для каждого из Edito-в
и при любом изменении любого Edit-а будет вычисляться выражение.
Только не забудь проворять допустимость вычислений
Отвечает: Владимир 
Уважаемый Eugene!
Учите учебники.
edit6.text:=floattostr(((strtofloat(edit1.text)*strtofloat(edit2.text)*strtofloat(edit3.text))-strtofloat(edit4.text))/strtofloat(edit5.text));
Отвечает: Zoi 
Edit6.Text=FloatToStr(((StrToFloat(Edit1.Text)
*StrToFloat(Edit2.Text)
*StrToFloat(Edit3.Text))
-StrToFloat(Edit4.Text))
/StrToFloat(Edit5.Text))
Отвечает: Зуев 
Это первый путь.
Edit имееет тип String, а операции надо производить с числами.
Функция FloatToStr - преобразует тип Real в String;
функция StrToFloat - делает все наобоброт.

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit6.Text:= FloatToStr((StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text)*
StrToFloat(Edit3.Text)*StrToFloat(Edit3.Text)*StrToFloat(Edit4.Text))/StrToFloat(Edit5.Text));
end;

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

Отвечает: СПУ 
Edit6.Text:= IntToStr(((StrToInt(Edit1.Text) * StrToInt(Edit2.Text) * StrToInt(Edit3.Text) - StrToInt(Edit4.Text)) / StrToInt(Edit5.Text))
Отвечает: Шешунов Вадим 
Edit6.Text :=
FloatToStr((StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text)*StrToFloat(Edit3.Text)-
StrToFloat(Edit4.Text))/StrToFloat(Edit5.Text))
Отвечает: Burich-Caeser 
Edit6.Text:=FloatToStr(((StrToInt(Edit1.Text) * StrToInt(Edit2.Text) * StrToInt(Edit3.Text)) -
StrToInt(Edit4.Text)) / StrToInt(Edit5.Text));

Или работайте через массив объектов.

Отвечает: wvw 
На самом деле проще вопроса в данной рассылке я не встречал, но так как сам когда-то был таким же то вот держи, можно и упростить , но это уж сам...
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit6.Text:=FloatToStr(((StrToInt(Edit1.Text)*StrToInt(Edit2.Text)*StrToInt(Edit3.Text))
-StrToInt(Edit4.Text))/StrToInt(Edit5.Text));
end;
но тут надо тебе будет продумать как избавится от неправильного ввода и деления на 0!
Вопрос № 86 задаёт: #One Ответить 
Проблема с TMainMenu: пишу &Файл, в итоге получается быстрый вызов именно с заглавной Ф (Alt, затем Shift+Ф). А хотелось бы и с просто ф (Alt+ф), не только с заглавной. Кто-нить знает, как?
Отвечает: Burich-Caeser 
Проверил, все и так работает безо всякого шифта.
Отвечает: SHKoder 
TactionList
Вопрос № 88 задаёт: TR Ответить 
У меня такой вопрос. Я использую TStringGrid. Размер его у меня может достигать нескольких десятков или сотен тысяч строк. Когда я его уменьшаю через StringGrid1.Lines.Count=xxx, то размер памяти, занимаемый этими данным, все равно не уменьшается. Как освободить лишнюю память? Или я что-то не так делаю?
Отвечает: Кама 
Никак не освободишь, только после перезапуска программы. Это борландский memory manager так работает: если память уже выделялась, потом освободилась, то она остается в заначке (в списке свободных блоков), что позволяет снизить время выделения доп.памяти. Можешь написать свой манагер или поискать чей-нить готовый.
Отвечает: Шешунов Вадим 
Во-первых, наверное-таки, не Lines, a Rows. А чтобы удалить строки из грида, имеется StringGrid1.Rows.Delete(i).
Отвечает: Андрей Германович 
Ошибка концептуальная.
Работать с таким массивом чрезвычайно неудобно.
Используй таблицу БД (например Interbase) , тогда в памяти будут только
рабочие строки, и появляются широкие возможности для выборки данных
Вопрос № 89 задаёт: #One Ответить 
Допустим, запустили программу из своей программы. Как узнать, с каким кодом возврата запущенная прога завершилась?
Отвечает: Кама 
Почитай про WaitForSingleObject(), для нее требуется структура PROCESS_INFORMATION, возможно в ней потом и возвращается код возврата
Отвечает: Шешунов Вадим 
Вообще-то, это зависит от того, как именно запускается "чужая" программа. Если через ShellExecute, то нужно проанализировать возвращаемое значение - если оно лежит в диапазоне от 0 до 32, то ошибка возникла таки (см. хелп Win32 Programmer Reference)
Отвечает: СПУ 
В Rx есть функция FileExecute.


Статья:   Работа со шрифтами на Win API. http://decoding.narod.ru/api/font/font.html


Сегодня поговорим о шрифтах, и о том, каким образом работать с ними на Win API. Нам потребуется переменная типа HFONT. Изменить стиль шрифта можно у любого компонента, я покажу это на примере кнопки.


var
  Font: HFONT;
  Btn: HWND;

Для создания нового экземпляра шрифта используется функция CreateFont, которая, в случае успешного завершения, возвращает Handle нового шрифта. Рассмотрим параметры этой функции.


procedure CreateFont(
   nHeight: integer,             // логическая высота шрифта
   nWidth: integer,              // логическая ширина символа
   nEscapement: integer,         // угол наклона
   nOrientation: integer,        // базовый угол ориентации
   fnWeight: integer,            // вес шрифта (можно считать как толщину символа)
   fdwItalic: Cardinal,          // будет ли шрифт курсивным
   fdwUnderline: Cardinal,       // будет ли шрифт подчеркнутым
   fdwStrikeOut,: Cardinal       // будет ли шрифт зачеркнутым
   fdwCharSet: Cardinal,         // идентификатор набора символов
   fdwOutputPrecision: Cardinal, // точность вывода
   fdwClipPrecision: Cardinal,   // точность отсечения
   fdwQuality: Cardinal,         // качество вывода
   fdwPitchAndFamily: Cardinal,  // шаг и семейство шрифта
   lpszFace: PChar               // Название шрифта
   ): HFONT;

Подробную информацию по каждому параметру можно прочитать в справке, я обращу ваше внимание лишь на некоторые из них. Отрицательное значение первого параметра говорит о том, что будет выбрано абсолютное значение высоты шрифта. Третий параметр отвечает за угол поворота шрифта относительно оси X. Угол задается в десятых долях градуса, то есть, чтобы повернуть текст на угол на 90°, нужно задать значение, равное 900. Для последних параметров можно использовать значение по умолчанию. Но если мы собираемся повернуть текст на какой-либо угол, то параметр fdwQuality лучше задать как ANTIALIASED_QUALITY, в этом случае текст будет сглажен. Посмотрим, как это реализуется.


Font := CreateFont( -30, 15, 25, 10, 1000, 1, 1, 0,
                    DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                    CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
                    DEFAULT_PITCH or FF_DONTCARE, 'Courier New' );

Чтобы назначить компоненту новый шрифт, ему нужно послать сообщение WM_SETFONT, где в качестве параметра wParam, нужно указать значение, возвращенное функцией CreateFont.


Btn := CreateWindowEx( 0, 'Button', 'Наш новый шрифт', WS_CHILD or WS_VISIBLE,
                       10, 10, 280, 60, Wnd, 0, hInstance, nil );
SendMessage( Btn, WM_SETFONT, Font, 0 );

На сегодня это все. Успехов в программировании.

.: Пример к данной статье :.

Исходники:   

MonDir

Программа, отслеживающая изменения в указанном каталоге (появление нового файла, удаление, переименование). Является примером работы с потоками.

Gifanm32

Программа умеет склеивать несколько gif файлов в один.

Gallery

Картинная галерея. Картинки JPG хранятся в базе данных. Есть возможность добавления отдельных файлов и групп файлов в базу. Возможность сохранения из базы в файл. Слайд-шоу по категориям и скопом без выделения категории. Алиас для базы - Gallery, Текстовый файл расположен на с:/ (базу и текстовый файл с категориями скачать в разделе download).

Fractal Forge

Программа прорисовки фракталов. Полностью функциональная и рабочая. Огромная скорость и большое количество настроек. Есть возможность делать AVI-файлы (!) , постеры до 20х30 метров (из А4 листов), встроенные фильтры, бесконечный ZOOM.

GraphF

Программа строит графики по заданным функциям. Есть возможности масштабирования. Типа MathCad′а, только лучше :)

Анаглиф

Програма строит объемные изображения, наблюдаемые через светофильтры. В наборе пока только 5 фигур, но их легко сделать самим! Жду ваших фигур для выкладывания их на сайте. А программа вроде неплохая получилась...

Сhats

Чат для локальной сети на сокетах. Введение в проект персонажей Microsoft Agents делает его уникальным, привлекательным, удобным и прикольным.

Тestinet3

Тestinet3 - пример проверки наличия подключения к Интернет

Internet counter

Актуальная прога. Когда пользователь входит в интернет, автоматически выводится маленькое окошко, где показываются время, проведенное в интернете, текущий тариф, количество потраченных центов и текущее состояние счета. Достаточно маленькая и удобная программа.


Модули  

GruString

Модуль для работы со строками. Большое количество функций для обработки строковых переменных.


Прога  

Pascal ABC

Думаю многие при программировании сталкивались с такой проблемой: у вас на компьютере есть код программы, но перепечатывать в програмную оболочку неохота, а вставлять нельзя (по крайней мере в Паскале). И мы всё же переписываем всё в ручную. Данная программа поможет упростить этот процесс. Всё что вам понадобиться это вставить код программы в редактор и сохранить. После того как программа сохранена её можно будет открывать из обычного Паскаля. Так же в этой программе есть задачник, который поможет вам лучше изучить Паскаль. По моему там даже есть учебник, но я его не использовал.


Книги  Ссылкой поделился Ivan Rod http://dfni.dp.ua/books/ 

Здесь находится множество книг по программированию.
Вот список книг по Delphi:

Михаил Фленов. Библия Delphi или тут 56.3M pdf
Боровский А. Н. Программирование в Delphi 2005 или тут 50.1M pdf
Боровский А. Н. Программирование в Delphi 2005 или тут 6.2M djvu
Стив Тейксейру, Ксавье Пачеку. Delphi5. Руководство разработчика. Части 1-2 или тут 4.7M pdf
Стив Тейксейру, Ксавье Пачеку. Delphi5. Руководство разработчика. Части 3-6 или тут 5.5M pdf
А.Я. Архангельский. Программирование в Delphi 7 или тут 82.2M pdf
Дарахвелидае П. Г., Марков Е. П. Программирование в Delphi 7 или тут 7.8M pdf
Галисеев Г. В. Программирование в среде Delphi 8 for .NET. Самоучитель или тут 42.0M pdf
Галисеев Г. В. Программирование в среде Delphi 8 for .NET. Самоучитель или тут 5.5M djvu
И. Ю. Баженова. Delphi 7. Самоучитель программиста или тут 23.9M pdf
Шпак Ю. А. Delphi 7 на примерах или тут 23.7M pdf
Стивенс. Delphi. Готовые алгоритмы тут 29.0M pdf
Библиотека программиста в среде Delphi или тут 7.5M doc
Бакнелл. Фундаментальные.алгоритмы с структуры данных в Delphi. или тут 38.3M pdf
Заметки программиста Delphi В. Фаронова или тут 3.3M pdf
Константин Грибачев. Delphi и Model Driven Architecture. Разработка приложений баз данных или тут 44.5M pdf
Marco Cantu. Delphi7 для профессионалов или тут 11.6M djvu
Delphi глазами Хакера или тут 4.3M pdf
Open GL Графика в проектах Delphi или тут 4.9M pdf
DiaSoft. Джулиан Бакнелл. Фундаментальные алгоритмы и структуры данных в Delphi или тут 38.3M pdf
Delphi глазами Хакера 4.2M pdf

Интересные и полезные сайты по Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите.

http://www.noil.pri.ee/ - Здесь вы можете почитать статьи, скачать исходники и компоненты, пообщаться на форуме.
http://www.delphi.int.ru/ - Ресурс для Delphi-программистов, где каждый найдёт что-то полезное!


Немного юмора:  :))

Иванов женился исключительно благодаря Интернету — ведь разве поперся бы Иванов тогда в театр, не сломайся у него модем?


Вчера офис компании Sun подвергся нападению хулиганов из Microsoft. Они выбили все двери и вставили... окна.


Новое сообщение в Windows: Пользователь грозится выполнить недопустимую операцию.


Единственный формат, понятный MS Windows - format c:


Оставь надежду всяк сюда входящий... Windows


Вчеpа ОМОH pазогнал демонстpацию КПРФ до скоpости 75 км/ч.
В pезультате ЦК начал пеpегpеваться, давать сбои и окончательно упал в
down; некотоpые ячейки паpтии подвисли; а также пpишлось менять всю матеpинскую платфоpму паpтии.


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



Дружественные рассылки:

Рассылки Subscribe.Ru
Программирование на Delphi
Рассылка сайта Delphi coding


Все кто хочет изучить Delphi и реально научиться писать свои программы, ЦПИ "Эверест" поможет Вам.
Всё, что Вам нужно это компьютер и доступ к интернету - для получения уроков.

10 причин в пользу платного обучения в ЦПИ "Эверест"…

1. Когда Вы платите деньги- появляется дополнительный стимул против лени: надо учиться, ведь деньги уже уплачены….
2. Учась платно, получаете удобный для Вас график работы.
3. Весь необходимый справочный материал Вы получите в свое время и на русском языке.
4. Используя интернет в качестве бесплатной библиотеки, Вы получаете все ее минусы:

  • трата времени на поиск необходимого материала (а это потерянные деньги и время). А у Вас есть лишние время и деньги?;
  • отсутствие гарантии, что Вы "осилите" данный материал, ведь пишут его, в основном, не педагоги- профессионалы, а программисты- профессионалы, а они пишут для таких же, как они. А Вы программист- профессионал?
  • отсутствие системности в скачиваемом материале (ведь человек, писавший для Вас материал, не знает, чем Вы владеете). А Вы обладаете системой знаний по Delphi?;

5. Стоимость обучения одного месяца в ЦПИ "Эверест" сравнима с ценой хорошей книги. Но часто ли Вам попадались книги, рассчитанные именно на Вас. Мы же работаем индивидуально.
6. Автор книги или магазин не несет никакой ответственности за то, поняли ли Вы материал или нет, мы же закрепляем за каждым курсантом преподавателя, курирующего Вас.
7. Освоив программирование в Delphi - Вы освоите:

  • основы настоящего программирования- структурного и процедурного программирования ;
  • систему работы с базами данных и SQL- запросами, а это одно из самых перспективных направлений в программировании;
  • язык программирования ObjectPascal, что позволит Вам легко перейти, при желании, на С или Паскаль;
  • работу с компьютерной графикой;
  • при желании - основы низкоуровневого программирования ( Ассемблер).

8. А это значит, что …Мы предлагаем получить "высшее образование" - профессию программиста всего за 1 год и 144 доллара, любой ВУЗ попросит в 3 раза больше за один только семестр.
9. Вы получаете самый практический курс в сети, поскольку теория дается только тогда, когда она действительно необходима…
10. Учиться у нас легко и просто. Весь материал доступен и простым людям, не имеющим никогда дел с программированием….


По всем вопросам обращайтесь ко мне.

Если вы встретили в интернете интересный сайт или статью, да и вообще, что угодно связанное с Delphi, поделитесь ссылкой.
Если можете написать статью связанную с Delphi - присылайте с радостью выложу.
Давайте поможем друг другу!  Архив рассылки.

Предложения, критику и пожелания пишите на e-mail.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiinternet
Отписаться
Вспомнить пароль

В избранное