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

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


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

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

Выпуск : № 44


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


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

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


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


Вопрос № 107 задаёт: lly  Ответить
Главное окно проги, это текстовое поле которое показывает время. Окно видно только когда подключен к интернету, не могу сделать что бы форма была всегда сверху. В свойствах формы установлено (Formstyle="fsStayOnTop)." Подскажите что можно сделать?
Вопрос № 108 задаёт: Константин Завальный  Ответить
Здраствуйте! Помогите, пожалуйста, разобраться с функциями FindFirst, FindNext, FindClose. Я делал примерно так:
....
var
F: TSearchRec;
r: ShortInt;
path: string;
begin
path:='some_path';
FindFirst(path, 0, F);
Memo.Lines.Add(F.Name);
repeat
r:=FindNext(F);
Memo.Lines.Add(F.Name);
until r<>0;
FindClose(f);
end;

И это все не работало - вместо имен файлов в Мемо были пустые строки...

Вопрос № 109 задаёт: Середюк И. А. Ответить
Здравствуйте! Нижеприведенная функция возвращяет системную дату в нужный мне формат. Но она возвращает почемуто не то время, которое утановлено в моей Винде, а время отличное на -2 или -3 часа, тоисть по Гринвичу. На некоторое время я смог устранить эту проблему таким образом (IntToStr((st.wHour+3)). Но во время перехода на зимнее время мне возвращяется время на час позже (если системное время 14:00, то возвращает 15:00). Я снова могу исправить это в исходнику, но небуду же я каждых полгода исправлять исходник из-за времени.
Подскажите, пожалуйста, как сделать так, чтобы выводило правильное время, тоисть такое как у моей системы, а не по Гринвичу! Приведите пример. Заранее спасибо.

function ST(): TDateTime;
var
st : TSYSTEMTIME;
SysTime: string;
begin
GetSystemTime(st);
SysTime:=IntToStr((st.wHour))+':'+IntToStr(st.wMinute)+':'+IntToStr(st.wSecond);
Result:=StrToTime(SysTime);
end;

Ответы.

Вопрос № 104 задаёт: source Ответить 
Здравствуйте уважаемые эксперты и подписчики рассылки. У меня возникла небольшая проблема. Как сделать, чтобы при нажатии на кнопку в компонент PopUpMenu добавлялись новые пункты - Caption которых брался из списка, которых хранится в текстовом файле. Процедура для всех новых пунктов одна и та же, но необходимо получить Caption пункта меню по которому кликнули. Изначально в этом меню уже существуют 3 пункта. При каждом клике по кнопке список пунктов должен обновляться . Другими словами нужно что-то похожее на меню избранное в IE с вышеуказанными параметрами. Я просто довожу до ума свой IRC клиент - решил в него добавить пункт Избранное, но вот застрял на создании пунктов меню :(.
http://source.at.tut.by/instruments.exe
Отвечает: Евгений http://decoding.narod.ru 
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    N11: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    procedure N31Click(Sender: TObject);
    procedure ShowCaption(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ShowCaption(Sender: TObject);
begin
   // Узнать Caption
   ShowMessage( ( Sender as TMenuItem ).Caption );
   // Узнав заголовок запускай браузер с помощью ShellExecute
end;

procedure TForm1.N31Click(Sender: TObject);
var
  NewItem: TMenuItem;
begin
   // Добавить пункт
   NewItem := TMenuItem.Create( PopupMenu1 );
   NewItem.Caption := 'Заголовок можешь взять из файла';
   NewItem.OnClick := ShowCaption;
   PopupMenu1.Items.Add( NewItem );
end;

end.
Вопрос № 105 задаёт: Володя Павлов Ответить 
Подскажите пожалуйста (желательно привести пример) как при помощи Delphi переконвертировать html файл в текстовый, doc файл в текстовый.
Отвечает: Евгений http://decoding.narod.ru 
Можно конечно написать свой парсер (или воспользоваться чужим), и все сделать руками, но есть способ проще. Через компонент TWebBrowser.
Бросай на форму TWebBrowser (если пользователь не должен его видеть, сделай Visible := false). Загрузи в него страницу, которую нужно перевести в текст:
procedure TForm1.FormCreate(Sender: TObject);
begin
   WebBrowser1.Navigate( 'C:/test.html' );
end;

А дальше делай так:

procedure GetHtmlCode( WebBrowser: TWebBrowser; FileName: string );
var
  htmlDoc: IHtmlDocument2;
  PersistFile: IPersistFile;
begin
   htmlDoc := WebBrowser.document as IHtmlDocument2;
   PersistFile := HTMLDoc as IPersistFile;
   PersistFile.Save( StringToOleStr( FileName ), true );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   GetHtmlCode( WebBrowser1, 'C:\HTMLDoc.txt' );
end;
А чтобы это все заработало, в uses добавь MSHTML и ActiveX (а возможно еще OleCtrls, SHDocVw, StdCtrls, но не факт).
Отвечает: Ar  
Самым простым выходом будет использовать MS Word благо он работает и
  html и с текстовыми файлами
  т е открываем файл в Word и сохраняем в нужном формате.

  текст примера ниже

unit ufrmMain;

interface

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

type
  TForm1 = class(TForm)
    odlg: TOpenDialog;
    sdlg: TSaveDialog;
    btnConvert: TButton;
    procedure btnConvertClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnConvertClick(Sender: TObject);
var
    WFalse, WFormat, WFileName : OleVariant;

    wrd : TWordApplication;
    wrddoc : TWordDocument;

    f_name : string;

    function OpenDoc( Word : TWordApplication; FName : WideString ) : _Document;
    var
      FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
      Revert, Format : OLEVariant;
    begin
      FileName := FName;
      ConfirmConversions:=False;
      ReadOnly:=True;
      AddToRecentFiles:=False;
      Revert:=True;
      Format:= wdOpenFormatAuto;
      Result := Word.Documents.Open( FileName, ConfirmConversions, ReadOnly,
        AddToRecentFiles, EmptyParam, EmptyParam, Revert, EmptyParam,
        EmptyParam, Format );
    end;

begin
  if (odlg.Execute) and FileExists(odlg.FileName) then
  begin
    if sdlg.Execute then
    begin
      WFalse:=false;
      f_name:=odlg.FileName;
      Wrd:=TWordApplication.Create(nil);
      try
        Wrd.ConnectKind := ckNewInstance;
        Wrd.Connect;
        wrddoc:=TWordDocument.Create(nil);
        try
          wrddoc.ConnectKind:=ckAttachToInterface;
          wrddoc.ConnectTo(OpenDoc(wrd, f_name));
          WFormat:=wdFormatText;
          WFileName:=sdlg.FileName;
          wrddoc.SaveAs(WFileName, WFormat);
          wrddoc.Close;
          Wrd.Quit(WFalse);
        finally
          wrddoc.Free;
        end;
      finally
        Wrd.Free;
      end;
    end;
  end;
end;

end.
Вопрос № 106 задаёт: Ярошук Ю.А. Ответить
Имею базу данных в Excel книгах (5 книг), как организовать поиск и сортировку на Delphi. Варианты:
1. Формат данных Excel.
2. Формат данных html.
Отвечает: Андрей Германович 
1) В формате html поиск осуществляется так же как в текстовом файле, сортировка невозможна
2) В формате Excel можно использовать компонент TXLSReadWriteII, который напрямую работает с файлами
НО! и то, и другое - это "чесать левое ухо правой ногой" Возьми Firebird Embedid - получишь нормальную БД со всеми стандартными возможностями поиска, сортировки и пр. А результат можно "сплевывать" в любой формат - html, rtf, xls


Статья:    "Построение графиков с использованием компонента gl.ocx." http://decoding.narod.ru/practic/gl/gl.html

Что делать, если ваше приложение должно строить графики? Можно все сделать самостоятельно, а можно воспользоваться готовыми решениями (сторонними компонентами). Сегодня поговорим о втором способе, а именно, о компоненте gl.ocx, который является частью пакета MathCad. Этот компонент обладает большим количеством настроек: освещение, туман, внешний вид, перспектива и т.д., и способен украсить любую вашу программу.

Если MathCad у вас установлен, запускаем Delphi, заходим в Component -> Import ActiveX Control и выбираем Mathsoft 3-D Plot module (Version x.x), где x.x - версия компонента (у меня 8.6). Если MathCad'а у вас нет, то скачиваем этот компонент из интернета (например, в конце данной статьи). В этом случае вам еще понадобятся библиотеки EfiUtils.dll, UIUtil.dll, VSFC90.dll (они также включены в архив в конце статьи). Переписываем эти файлы в отдельный каталог, заходим в Component -> Import ActiveX Control и нажимаем кнопку "Add...". Находим gl.ocx и нажимаем "Install...". Компонент установится на вкладку ActiveX, и будет называться OpenGL.

TOpenGL способен отображать 2D и 3D графики, а в качестве данных должен передаваться одномерный или двухмерный массив типа OleVariant соответственно. Начнем с простого и нарисуем синусоиду.


procedure TForm1.Button1Click(Sender: TObject);
const
  Start = -pi;
  Finish = pi;
  Step = 50;
var
  Diagram: OleVariant;
  i: integer;
begin
   Diagram := VarArrayCreate( [0,Step], varDouble );
   for i := 0 to Step do
      Diagram[i] := sin( ( Finish - Start ) / Step * i );
   OpenGL1.RemoveSurfaces;
   OpenGL1.AddSurface( Diagram );
end;

Для TOpenGL, заполненный массив представляет собой поверхность, которую нужно нарисовать, причем одновременно может быть отображено несколько таких поверхностей. Просто создаем несколько массивов OleVariant, заполняем их, и добавляем к списку поверхностей, которые должны быть построены, используя функцию AddSurface. RemoveSurfaces полностью отчищает этот список.

Теперь посмотрим, как строится 3D график, на примере функции Cos(Sqrt(X*X+Y*Y)).


procedure TForm1.FormCreate(Sender: TObject);
var
  Diagram: OleVariant;
  i, j: integer;
  k: integer; 
begin
   k := 36;
   Diagram := VarArrayCreate( [0,k,0,k], varDouble );
   for i := 0 to k do
      for j := 0 to k do
         Diagram[i,j] := Cos( Sqrt( ( i-k/2 ) * ( i-k/2 ) + ( j-k/2 ) * ( j-k/2 ) ) );
   OpenGL1.RemoveSurfaces;
   OpenGL1.AddSurface( Diagram );
end;

Теперь поговорим о распространении приложений, использующих этот компонент. Не факт, что у пользователя, установившего вашу программу, установлен MathCad. Следовательно, вместе с приложением придется распространять следующие файлы: gl.ocx, EfiUtils.dll, UIUtil.dll, VSFC90.dll. Помимо этого следует помнить, что gl.ocx необходимо зарегистрировать в системе.

Если вы будете распространять свое приложение в архиве, вам самим придется позаботиться о регистрации компонента. Для этого в системе имеется штатная утилита regsvr32. Регистрация выполняется следующим образом: "regsvr32 c:\путь к файлу\gl.ocx". Обратное действие выполняется так: "regsvr32 /u c:\путь к файлу\gl.ocx". Разумеется, путь к файлу должен быть реальный.

Если вы будете распространять свое приложение в виде инсталляционного пакета, то заботу о регистрации компонента можно возложить на него. Например, если вы делаете инсталлятор в CreateInstall, то на вкладке "Мастер" выберите "Регистрировать", и добавьте gl.ocx к списку файлов, которые нужно зарегистрировать. А для Inno Setup это может выглядеть примерно так:


[Setup]
AppName=MathSoft 3-D plot module
AppVerName=MathSoft 3-D plot module 8.0
AppCopyright=MathSoft, Inc
DefaultDirName={sys}

[Files]
Source: "C:\distr\ActiveX\UiUtil.dll"; DestDir: "{sys}"
Source: "C:\distr\ActiveX\EfiUtils.dll"; DestDir: "{sys}"
Source: "C:\distr\ActiveX\VSFC90.dll"; DestDir: "{sys}"
Source: "C:\distr\ActiveX\gl.ocx"; DestDir: "{sys}"; Flags: regserver

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

.: Пример к данной статье :.
.: gl.ocx и необходимые библиотеки :.

Компоненты:   

FreeDB reader v.1.1

Этот компонент позволит твоему приложению получить информацию о audioCD диске с бесплатных баз данных (таких как freedb.freedb.org). Пример приложения включён. Для того чтобы использовать у Вас должны быть установлены компоненты Indy.
В версии 1.1
  • Исправлены баги
  • Добавлена возможность получения года и стиля произведения.
Поддерживаемые версии: D5 D7 D2005

System Investigation 2 v.2.3.1

Получает достаточно много информации об окружении Windows.
Поддерживаемые версии: D3 D4 D5

CardTable v.1.86

CardTable это свободно распространяемый Delphi компонент, который облегчает создание карточных игр. Поддерживает плавное перемещение и опцию drag and drop. Также вы можете использовать несколько наборов карт.
Поддерживаемые версии: D5 D6 D7

EmergingHelp 1.0 для Delphi 5-7

Компоненты EmergingHelp являются текстовыми компонентами на базе компонентов TEdit и TMemo. К возможностям родительских компонент TEdit и TMemo добавляется возможность получения всплывающей подсказки в виде списка (как в IDE Delphi).

Компонент TEditEmergingHelp Создан на основе компонента TEdit без поддержки баз данных. Список подсказок обеспечивается списком типа TStrings.
Компонент TEditEmergingHelpDS Создан на основе компонента TEdit с поддержкой баз данных через источник данных DataSource.
Компонент TEditEmergingHelpDB Создан на основе компонента TEdit с поддержкой баз данных. Список подсказок обеспечивается из базы данных.
Компонент TMemoEmergingHelp Создан на основе компонента TMemo без поддержки баз данных. Список подсказок обеспечивается списком типа TStrings.
Компонент TMemoEmergingHelpDS Создан на основе компонента TMemo с поддержкой баз данных через источник данных DataSource.
Компонент TMemoEmergingHelpDB Создан на основе компонента TMemo с поддержкой баз данных. Список подсказок обеспечивается из базы данных.
Дополнительные возможности:
· Свойство UseRestory – обеспечивает создание списка подсказок при вводе пользователем данных в окно компонента. Запоминает 100 последних вводов.
· Свойство UseCase – в зависимости от состояния данного свойства, поиск в списке осуществляется с учетом (или без учета) регистра.
· Возможность перемещения по списку с помощью клавиатуры клавишами VK_UP, VK_DOWN, VK_HOME, VK_END.
· Возможность перемещения по списку с помощью скроллинга мыши.
· Клавиши VK_ESCAPE, VK_TAB закрывают список.
· Комбинация клавиш Ctrl+Space раскрывает полный список.

Регистрация

Внимание! Это beta-версия компонентов EmergingHelp. Присылайте, пожалуйста, обнаруженные "баги", советы, комментарии на Email: mailto:rozin@tut.by?subject=О компонентах EmergingHelp. В ответ я пришлю вам регистрационный код, после ввода которого и нажатия кнопки "Регистрировать" в окне регистрации, данное окно больше не будет появляться.

Полностью функциональная версия, единственное ограничение, при загрузке Delphi, будет появляться окошко регистрации, после нажатии на кнопку оно закроется.


Исходники:   

Registry Date/Time Demo v.1.0

Вы знаете, что при каждом создании или модификации каждого ключа в Реестре сохраняется дата и время этих изменений? Программа Registry Date/Time Demo была написана для того, что показать эту возможность, а также продемонстрировать, как одна программа может управлять другой посредством сообщений Windows.
Поддерживаемые версии: D5 D6

Windows Messages and GlobalAtom demo

Этот пример показывает как одно приложение (AP_1) может запустить другое (AP_2) и послать ему некоторые параметры. Также Вы не сможете запустить приложение AP_2 без AP_1, и если AP_2 уже выполняется, и Вы попробуете запустить AP_2 ещё раз, то окно AP_2 станет активным, но запуска второй копии приложения не произойдёт.
Поддерживаемые версии: В2 D3 D4


Книги  

Разработка баз данных

Разработка приложений баз данных является одной из наиболее востребованных возможностей среды программирования Delphi. Эта среда программирования предоставляет разработчику поистине великолепный набор простых в использовании инструментов, позволяющих быстро разрабатывать сложные проекты. В этой книге подробно рассматриваются все наиболее распространенные серверы баз данных и приводятся примеры взаимодействия с каждым из них. Также уделено внимание вопросам проектирования эффективных баз данных, что позволит читателю, не обладающему необходимым опытом, незамедлительно приступить к работе. Книга в первую очередь ориентирована на начинающих программистов, работающих с Delphi, и на тех, кто хочет углубить свои знания в сфере разработки баз данных.
Автор: Сорокин А.В.
Формат: .djvu

Библия Delphi   Размер файла: 7.5 Mb

Эта книга посвящена популярному в нашей стране и перспективному во всём мире языку программирования Delphi. Она направлена на всех программистов,
от начинающего, до профессионала. В любом случае, я советую всем прочитать её полностью. Как показывает практика, большинство людей научились программированию по книгам, но ни одна из книг, которые я видел, не объясняет принципиальных основ работы Windows и компьютера в целом. Без понимания этих вещей не возможно написать эффективный код.
Автор: Hprrific aka Фленов Михаил
Формат: .doc

Программирование на C++ глазами хакера

Авторы книги: Фленов М.Е. 
Язык: Русский 
Формат: chm 
Размер файла: 4.29 Mb

Автор рассматривает множество нестандартных приемов программирования и примеры использования недокументированных возможностей языка C++ при разработке шуточных программ и серьезных сетевых приложений, которые могут помочь при создании программ диагностики сетей, управления различными сетевыми устройствами и просто при повседневном использовании интернет-приложений. 
Знакомство с приемами и алгоритмами, которые используют хакеры для написания своих утилит, позволит Вам создать собственную надежную систему обороны. 
Для эффективного освоения материала Вам понадобятся минимальные знания C++ и начальные навыки общения с компьютером и мышкой, а книга поможет познать хитрости хакеров и секреты профессиональных программистов.

Прокси для пользователей

Авторы книги: Red Dragon 
Язык: Русский 
Формат: exe 
Размер файла: 803 Kb

Если в вашей сети стоит корпоративный прокси, если вас не пускают на сайт из-за вашего не русского IP-адреса, если заграничный спонсор посылает вас на... три буквы, потому что вы из России - пора настраивать прокси. Новая электронная книга Proxy for Users - ПРОКСИ для Пользователей. Впервые на понятном русском языке там подробно рассказано о прокси-серверах. Все об анонимайзерах, ftp-proxy, SOCKS и т.п.


Интересные и полезные сайты по Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите.
http://www.noil.pri.ee/ - Здесь вы можете почитать статьи, скачать исходники и компоненты, пообщаться на форуме.
http://www.delphi.int.ru/ - Ресурс для Delphi-программистов, где каждый найдёт что-то полезное!
http://www.ExCode.ru - Программирование на высоком уровне
http://decoding.narod.ru - Сайт для Delphi-программистов со статьями автора, компонентами, FAQ, и другой полезной информацией.

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

- Диспетчер! Говорит борт 1342, говорит борт 1342. У нас отказал бортовой компьютер, у нас отказал бортовой компьютер! Что делать?
- Говорит диспетчер. Играйте пока на запасном. Повторяю, играйте на запасном.


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


Майкрософт подала в суд на компанию, выпускающую стиральный порошок *Дося*. Майкрософт не понравился девиз рекламы фирмы Дося - " Если нет разницы, то зачем платить больше?" Адвокаты Майкрософт утверждают, что ИМЕННО после показа этой рекламы, миллионы Росиян бросились в магазины покупать НЕЛИЦЕНЗИОННЫЕ (пирацкие) копии Виндоуз..... 


Девушка:
- У меня клавиатура не работает
Админ:
- Кофе?
Девушка:
- Чай.
Админ:
- С сахаром?
Девушка:
- Без.
Админ:
- Тогда ерунда, к утру высохнет.


Компьютер не роскошь, а средство существования.


Кошмар геймера-чемпиона: "Я против Я".


Баг или фича - вот в чем вопрос...


- Господи! Что же ты так плохо устpоил этот миp?
- А я его и не стpоил. Я только хостинг пpедоставил.


- А что это y тебя все вpемя ScanDisk запyскается? Сломалось что-нибyдь?
- Да нет, это обычная pеакция Windows на выключение компьютеpа кнопкой питания.
- Разве ты не знаешь, как пpавильно выключать компьютеp?
- Я-то как pаз знаю, а вот Windows - нет!



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

Рассылки 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
Архив рассылки
Отписаться
Вспомнить пароль

В избранное