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

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


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

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

Выпуск : № 40


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


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

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


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


Вопрос № 95 задаёт: hexer Ответить
Доброго времени суток, уважаемые эксперты.
Хотел спросить: корректно ли работают компоненты/методы со вкладки IB с базой Firebird?
Вопрос № 96 задаёт: Markova Natalia  Ответить
Такая вот проблема:
нужно сделать заполнение вордовских шаблонов(вставка из базы данных на места закладок), сохранение и распечатку заполненных документов. На word 2000 все работает без проблем, а вот с Office Xp возникает проблема: файл создается, созраняется, а потом возникает ошибка "Microsoft Word - обнаружена ошибка" с предложением отправить отчет в майкрософт...Как с этим бороться?

+++++++++++++++++++++++++++++++++++
unit winword;{модуль для работы с вордом}
interface
procedure Wopen(filename:string);
procedure Wrun;
procedure Wsearch(data:string);
procedure Winsert(info:string;_italic:boolean);
procedure WQuit;
procedure Wclose;
procedure WSave(Name:string);
procedure WPrint;


implementation
uses Olectnrs,comobj;
var MsWord:Variant;


procedure WOpen(fileName:string);
begin
try MsWord.Documents.Add(fileName{,EmptyParam});
except WError(2,'файл не найден'); end;
end;


procedure WRun;
begin
try MsWord:=CreateOleObject('Word.Application');
MsWord.Visible:=False;
except Werror(1,'Microsoft Word не установлен');
end;
end;


procedure Wsearch(data:string);
var What,Which,Count,Name:OLEVariant;
begin
What:=-1;
Which:=unAssigned;
Count:=unAssigned;
Name:=data;
MsWord.Selection.GoTo(What,Which,Count,Name);
end;


procedure Winsert(info:string;_italic:boolean);
begin
MsWord.Selection.Font.italic:=_italic;
MsWord.selection.TypeText(info);
end;


procedure WQuit;
begin
MsWord.Quit;
end;


procedure WClose;
begin
MsWord.Documents.Close;
end;


procedure WSave(Name:string);
begin
MsWord.ActiveDocument.SaveAs(FileName:=Name);
end;


procedure WPrint;
begin
MsWord.ActiveDocument.Print;
end;
end.


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
{вот так используется}
Wrun;
Wopen('c:\program files\my.dot');
//открытие шаблона
...
Wsearch('data1'); Winsert('record 1', false);
...
Wsave('c:\program files\new.doc');
{печать}
Wclose; //закрытие документа
WQuit; //закрыть word
end;
Вопрос № 97 задаёт: #One Ответить
Как узнать IP-адрес машины, на которой прога запущена?

Ответы.

Вопрос № 92 задаёт: #One Ответить 
Кто-нибудь подскажет, как бороться с глюками Delphi 2005 Architect? Устанавливал и на разные машины, и с разных дисков, но глюки везде одни и те же. Например, в проводнике откываю файл с Дельфёвым расширением, Дельфи стартует и на пол-пути загрузки появляется собщение, что де система не может обнаружить файл (который открываю). Подобных примеров очень много могу привести, но письмо огромным станет. И ещё. Есть ли версия Delphi 2005, которая работает без установки .NET? Дело в том, что мне эта библиотека не нужна, а комп она нагружает не по-детски.
Отвечает: Роман Антонов 
Могу посоветовать только, поставить обновления для Delphi 2005 Architect.
Вот линки:
Delphi2005_Update2_ArchitectPatch/d2005_ARCH_upd2.exe
Delphi_2005_Update3_Arch_Patch/d2005_arch_upd3.zip
Пробовал выполнять открытие файлов Delphi с разным расширением, вроде все работало нормально.
И еще маленький нюанс: эти обновления ставятся на полную (НЕ ТРИАЛЬНУЮ) версию Delphi не важно зарегистрирована она или нет.
Второе обновление является кумулятивным, так что первого не нужно, тем более что оно значительно больше (как ни странно).

Насчет версии, так чтобы без установки .NET. Ну не знаю, по крайней мере, я о такой не слышал. Поскольку если ты заметил она (Delphi) ориентирована именно на эту платформу в первую очередь (вспомни Delphi 8). И Borland оперативно выпустил 2005-ую именно по причине большой популярности платформы Win32, которую 8 версия не поддерживала вовсе. Отсюда можно сделать вывод, что платформа Win32 добавлена для совместимости с предыдущими версиями. И эта совместимость действительно есть. Так что думаю, что в случае с Delphi 2005 без .NET все же не обойтись (или оставаться на 7 версии).
Отвечает: SHKoder 
Delphi 2K5 еще сырая, тем более к ней есть уже два патча, один я скачал 25 метров, второй не качал, у меня информация на июнь 2005г. может от того времени еще есть патчи... а делфи без дот нет это тебе 7мую только если :)
Вопрос № 93 задаёт: TIM Ответить 
Привет всем!
У меня 2 вопроса:
1. Как очистить папку "Temp"? Если можно несколько вариантов.
2. Как запихнуть текст (.txt) файл в ресурсы (.res) и юзать его оттуда?
Спасибо
Отвечает: Евгений http://decoding.narod.ru 
Ответ на вопрос №93 (часть 2)
Допустим, тебе надо добавить в приложение текстовый файл с именем MyText.txt.
Создаешь файл *.rc (например MyText.rc), и записываешь туда следующее:
1 RCDATA LOADONCALL MyText.txt
С помощью brcc32.exe делаешь *.res файл
brcc32.exe MyText.rc
Получаешь MyText.res
Далее этот ресурс нужно подключить, можешь сделать это после директивы {$R *.dfm}
{$R *.dfm}
{$R MyText.res}

Теперь его остается только прочесть

procedure TForm1.Button1Click(Sender: TObject);
var
  ResStream: TResourceStream;
begin
 ResStream := TResourceStream.CreateFromID( HInstance, 1, RT_RCDATA );
 Memo1.Lines.LoadFromStream( ResStream );
 ResStream.Free;
end;

А вообше, почитай вот эту статью, посвещенную работе с ресурсами:
http://decoding.narod.ru/practic/resource/resource.html
Вопрос № 94 задаёт: Mikhail Ответить 
Подскажите пожалуйста, как сделать, чтобы в Edit можно было ввести только цифры.
Заранее благодарен за ответы.
Отвечает: Евгений http://decoding.narod.ru 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not( Key in ['0'..'9', #8] ) then
      Key := #0;
end;
Отвечает: Левшуков 
//Создаем событие в Edit onKeyPress
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', #8]) then  // если Key не цифра или backspase
    Key := #0;  // делаем пустой
end;
Отвечает: Ярошук Ю.А.
Можно так: события OnKeyPress
if not(Key in ['0'..'9']) then Key:= #0;
Отвечает: Вадим Шешунов 
1-й вариант - использовать TMaskEdit cо свойством EditMask
установленным '999999999;1;' (девяток столько, сколько ожидается
цифр).
2-й вариант - написать обработчик TEdit.OnKeyPress (годится и для
TEdit, и для TMaskEdit), в котором должно быть такое:

if not (Key in ['0'..'9']) then
Key := #0;

Отвечает: Screw aka Viktor 
Сделайте следующее событие для компонента TEdit:
PROCEDURE TForm3.sEdit4KeyPress(Sender: TObject; VAR Key: Char);
BEGIN
  // Key — символ, соответствующий нажатой клавише.
  // Если символ недопустимый, то процедура заменяет его
  // на символ с кодом 0. В результате этого символ в поле
  // редактирования не появляется, и у пользователя создается
  // впечатление, что программа не реагирует на нажатие некоторых
  // клавиш.
  CASE Key OF
    '0'..'9': ;                         // цифра
    #8: ;                               // клавиша 
    #13: Edit4.SetFocus; // клавиша , переводим фокус на второй Edit
    // остальные символы — запрещены
  ELSE
    Key := Chr(0);                      // символ не отображать
  END;
END;
Отвечает: Alexey Kostin 
procedure TForm1.Edit1KeyPress(Sender:TObject; var Key:PChar);
begin
        case Key of
                '0'..'9',#8 : ;  //разрешены к вводу только цифры и BackSpace
        else key := Char(0) ;  //все остальное запрещено
end;
Отвечает: wvw 
Лучше использовать для этих целей компонент SpinEdit, но если все-таки надо использовать просто Edit то можно примерно так (правда выглядит не совсем корректно):
procedure TForm1.Button1Click(Sender: TObject);
begin
  Try
  If StrToInt(Edit1.Text)=StrToInt(Edit1.Text) Then
//...какое-то действие или можно без него...
  Except
    ShowMessage('Возможен только ввод цифр!');
    Edit1.Text:='0';
  end;
end;
Отвечает: SHKoder 
используй спинэдит TSpinEdit
Отвечает: THEWAX 
У меня есть два варианта:
1)Не знаю почему, но мне этот вариант больше нравится
type
soc = set of char;//обявляем тип - множество символов

var
soc1,soc2 : soc;//объявляем переменную типа множества символов

procedure TForm1.FormActivate(Sender: TObject);//событие активизации формы
begin
  // объявление допустимых символов ввода для Edit'a 
  soc1 := ['0'..'9','a'..'f','A'..'F',#8,#46];
   //или в данном случае
  soc2 := ['0'..'9'];
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:Char);
//событие нажатия клавиши в Edit'e
begin
   //запрет на ввод знаков, невходящих в заданное множество
  if not (key in soc2) then key := #0;
end;
2)Или попроще
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:Char);
//событие нажатия клавиши в Edit'e
begin
  case key of
  '0'..'9':;
  else key := #0;
end;


Статья:   Получение информации о окнах запущенных приложений.  http://decoding.narod.ru/practic/wndinfo/wndinfo.html


Рано или поздно каждому программисту приходится работать с посторонними окнами. Для этого нужно знать как минимум Handle окна, над которым необходимо произвести какие-либо действия. Чтобы узнать Handle, можно воспользоваться одной из программ, которая может показывать информацию об окнах (некоторые из них можно скачать в разделе Download). Но мы ведь программисты, следовательно сами можем получить интересующую нас информацию. А начнем с того, что рассмотрим некоторые процедуры, позволяющие работать с чужими окнами, некоторыми из этих процедур мы воспользуемся при написании программы.


FindWindow

function FindWindow( IpClassName, IpWindowName: PChar ): HWND; Функция возвращает описатель окна, удовлетворяющий запросу (0 - если такого окна не найдено). IpClassName Имя класса, по которому призводится поиск среди ВСЕХ окон системы. IpWindowName Заголовок окна. Один из параметров может быть равен nil, тогда поиск ведется по другому параметру.


FindWindowEx

[Не поддержевается Windows NT] function FindWindowEx( Parent, Child: HWND; ClassName, WindowName: PChar ): HWND; Функция возвращает описатель дочернего окна, удовлетворяющий запросу (0 - если такого окна не найдено). Parent Handle родительского окна. Child Handle дочернего окна. ClassName Класс дочернего окна. WindowName Заголовок дочернего окна. Handle родительского окна нужно указать обязательно, handle дочернего окна скорее всего 0, так как именно его и возврашает эта функция. Один из двух последних параметров может быть равен nil, тогда поиск ведется по другому параметру.


GetWindow

function GetWindow( hWnd: HWND; uCmd: Cardinal ): HWND; Функция возвращает описатель дочернего окна, удовлетворяющий запросу (0 - если такого окна не найдено). hWnd Handle родительского окна. uCmd Определяет отношения между указанным окном и окном, чей дескриптор должен быть найден.


GetParent

function GetParent( hWnd: HWND ): HWND; Функция возвращает описатель родительского окна для окна hWnd. (0 - если такого окна не найдено). hWnd Handle окна.


WindowFromPoint

function WindowFromPoint( Point: TPoint ): HWND; Функция возвращает описатель окна, которое находится в указанных координатах. Point Координаты пикселя.


IsWindow

function IsWindow( hWnd: HWND ): Bool; Возвращает True, если окно с заданным описателем существует и False в противном случае. hWnd Дескриптор окна.


IsWindowVisible

function IsWindowVisible( hWnd: HWND ): Bool; Возвращает True если данное окно видимо и False в противном случае. hWnd Дескриптор окна.


IsWindowEnabled

function IsWindowEnabled( hWnd: HWND ): Bool; Возвращает True если данное окно доступно и False в противном случае. hWnd Дескриптор окна.


ShowWindow

function ShowWindow( hWnd: HWND; nCmdShow: integer ): Bool; Функция показывает или прячет окно. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна. nCmdShow Константа, определяющая, что будет сделано с окном: SW_HIDE SW_SHOWNORMAL (SW_NORMAL) SW_SHOWMINIMIZED SW_SHOWMAXIMIZED SW_MAXIMIZE SW_SHOWNOACTIVATE SW_SHOW SW_MINIMIZE SW_SHOWMINNOACTIVE SW_SHOWNA SW_RESTORE SW_SHOWDEFAULT SW_MAX


EnableWindow

function EnableWindow( hWnd: HWND; bEnable: LongBool ): Bool; Функция активизирует или дизактивизирует окно. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна. bEnable True если окно нужно сделать активным и False в противном случае.


CloseWindow

function CloseWindow( hWnd: HWND ): Bool; Функция закрывает окно. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна.


GetDesktopWindow

function GetDesktopWindow( hWnd: HWND ): Bool; Функция возвращает описатель окна Рабочего Стола (Desktop). Без параметров.


SetWindowPos

function SetWindowPos( hWnd, hWndInsertAfter: HWND; X, Y, cx, cy: Integer; uFlags: Cardinal ): Bool; Устанавливает окно в новую позицию. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна. hWndInsertAfter Описатель окна, перед которым в списке Z-Order будет вставлено окно hWnd, или одна из следующих констант: HWND_BOTTOM Поместить окно на дно списка Z-Order. HWND_TOP Поместить окно на верх списка Z-Order. X Новая позиция окна по X. Y Новая позиция окна по Y. cx Новая ширина окна. cy Новая высота окна. uFlags Одна или несколько (разделенных OR) следующих констант: SWP_NOSIZE Не изменять размер окна после перемещения (cx, cy игнорируются). SWP_NOZORDER Не изменять положение окна в списке Z-Order. SWP_SHOWWINDOW Сделать окно видимым после перемещения. SWP_HIDEWINDOW Спрятать окно после перемещения. SWP_NOACTIVATE Не передавать фокус окну после перемещения. SWP_NOMOVE Не перемещать окно (игнорируется X, Y).


GetWindowText

function GetWindowText( hWnd: HWND; IpString: PChar; nMaxCount: integer ): integer; Функция возвращает текст окна. Для формы это будет заголовок, для кнопки - надпись на кнопке. hWnd Описатель того окна, текст которого нужно получить. IpString Переменная, в которую будет помещен результат. nMaxCount Максимальная длина текста, если текст длиннее, то он обрезается.


SetWindowText

function SetWindowText( hWnd: HWND; IpString: PChar ): Bool; Функция устанавливает текст окна. hWnd Описатель того окна, текст которого нужно установить. IpString Строка, содержащая устанавливаемый текст.


GetClassName

function GetClassName( hWnd: HWND; IpClassName: PChar; nMaxCount: integer ): integer; Функция возвращает класс окна. Для формы это будет заголовок, для кнопки - надпись на кнопке. hWnd Описатель того окна, класс которого нужно получить. IpClassName Переменная, в которую будет помещен результат. nMaxCount Максимальная длина текста, если текст длиннее, то он обрезается.


GetWindowRect

function GetWindowRect( hWnd: HWND; var IpRect: TRect ): Bool; Функция вычисляет координаты окна. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Описатель того окна, размеры которого нужно получить. IpRect Переменная, в которую будет помещен результат.

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


procedure TForm1.Timer1Timer(Sender: TObject);
var
  Wnd: HWND;                   // Hahdle найденного окна
  Pos: TPoint;                 // Позиция курсора
  Rect: TRect;                 // Координаты окна
  buff: array[0..255] of char; // Буфер
  WndText: string;             // Текст окна
  NameClass: string;           // Класс окна
begin
   // Получаем позицию курсора
   GetCursorPos( Pos );
   // Получаем Handle окна под курсором
   Wnd := WindowFromPoint( Pos );
   GetWindowRect( Wnd, Rect );
   GetWindowText( Wnd, buff, SizeOf( buff ) );
   WndText := StrPas( buff );
   GetClassName( Wnd, buff, SizeOf( buff ) );
   NameClass := StrPas( buff );

   // Выводим координаты курсора
   LabelPosX.Caption := 'X: ' + IntToStr( Pos.X );
   LabelPosY.Caption := 'Y: ' + IntToStr( Pos.Y );

   LabelHandle.Caption := 'Handle: ' + IntToStr( Wnd );
   LabelName.Caption := 'Name: ' + WndText;
   LabelClass.Caption := 'Class: ' + NameClass;
   LabelLeft.Caption := 'Left = ' + IntToStr( Rect.Left );
   LabelTop.Caption := 'Top = ' + IntToStr( Rect.Top );
   LabelWidth.Caption := 'Width = ' + IntToStr( Rect.Right - Rect.Left );
   LabelHeight.Caption := 'Height = ' + IntToStr( Rect.Bottom - Rect.Top );

   // Получаем Handle родительского окна 
   Wnd := GetParent( Wnd );
   GetWindowRect( Wnd, Rect );
   GetWindowText( Wnd, buff, SizeOf( buff ) );
   WndText := StrPas( buff );
   GetClassName( Wnd, buff, SizeOf( buff ) );
   NameClass := StrPas( buff );

   LabelParentHandle.Caption := 'ParentHandle: ' + IntToStr( Wnd );
   LabelParentName.Caption := 'ParentName: ' + WndText;
   LabelParentClass.Caption := 'ParentClass: ' + NameClass;
   LabelParentLeft.Caption := 'ParentLeft = ' + IntToStr( Rect.Left );
   LabelParentTop.Caption := 'ParentTop = ' + IntToStr( Rect.Top );
   LabelParentWidth.Caption := 'ParentWidth = ' + IntToStr( Rect.Right - Rect.Left );
   LabelParentHeight.Caption := 'ParentHeight = ' + IntToStr( Rect.Bottom - Rect.Top );
end;

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

Исходники:   

AdCPUUsage v.1.02

AdCpuUsage позволяет измерить частоту Центрально процессора (CPU). Используя AdCPUUsage, Вы сможете получить частоту CPU вызовом всего двух функций.
Полная функциональность.
Исходный код.
Поддерживаемые версии: CB4 CB5 D2 D3 D4 D5

CPUSpeed v.1.00

CPUSpeed измеряет скорость центрального процессора. Работает только с процессорами Pentium или более новыми.
Полная функциональность.
Исходный код.
Поддерживаемые версии: D2 D3

K-Keyboard v.1.0

Используя, этот пример Вы сможете изменить значение любой клавиши, или связать её с определенным приложением/словом, или заблокировать клавишу.
Полная функциональность.
Исходный код.
Пример приложения.
Поддерживаемые версии: D4 D5 D6 D7

Control Panel Demo v.1.0.0

Документированный демо проект, который показывает как создавать свои собственные аплеты для Windows Control Panel.
Полная функциональность.
Исходный код.
Поддерживаемые версии: D2 D3 D4

Port95 v.1.00

Delphi модуль и пример для доступа к портам ввода/вывода. Выполнен в традиционном для Pascal стиле. Только для Win9X.
Полная функциональность.
Исходный код.
Поддерживаемые версии: D2 D3 D4


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

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

Программист сдает коллективную работу (конецепция,
программа, дизайн). Заказчик удовлетворенно кивает, со всем
соглашается:
- Ну, вроде бы все принято!
- Отлично, с Вас эн-цать тысяч
- (отдавая деньги) Ну, я надеюсь, если потом нужно будет
переправить, можно будет обратиться? Это ведь не так - вот один
раз сделали и забыли?
- Разумеется, в зависимости от того, что и как переправить.
- Ну, конечно, я не скажу "Давайте все переделаем"!
- Не вопрос! Кстати, еще одно - можно будет потом, если у меня
кончатся вдруг деньги или будут проблемы я подойду к вам на счет
немного доплатить? Это мелочь, мне требуется очень редко, вас это
совсем не затруднит...
- ??? (заказчик удивленно открывает рот)
- Да вы не переживайте, я же не подойду к Вам, мол, заплатите мне
еще раз!


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


Драйверы вашего CD-ROM привода находятся на прилагаемом компакт-диске...


Вы не спите, вы сидите за компьютером, вы читаете почту, вы входите в транс...


В нашей больнице работают компы на базе ОС WINDOWS, добро пожаловать! :-]


Чуваку надоело работать с Windows 95 и он выдернул шнур из розетки..... 
На экране надпись "А вы уверены?" 


Вы идте по улице. Вдруг на Вас выливают ведро холодной воды с балкона. 
-Какого х@@? -, вопрошаете Вы. 
ВСЕ ВОПРОСЫ К ЯНДЕКСУ! 



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

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

В избранное