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

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


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

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

Выпуск : № 45


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


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

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


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


Вопрос № 110 задаёт: Андрей Аношин Ответить
Подскажите пожалуйста, кто работал с изображениями, как можно растянуть картинку не прпорционально. Например картинка имеет вид трапеции, а ее надо растянуть до прямоугольника.

Ответы.

Вопрос № 107 задаёт: illy  Ответить
Главное окно проги, это текстовое поле которое показывает время. Окно видно только когда подключен к интернету, не могу сделать что бы форма была всегда сверху. В свойствах формы установлено (Formstyle="fsStayOnTop)." Подскажите что можно сделать?
Отвечает: Евгений http://decoding.narod.ru 
// Поверх всех окон
procedure TForm1.Button1Click(Sender: TObject);
begin
   SetWindowPos( Handle, HWND_TOPMOST, Left, Top, Width, Height,
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );
end;

// Отменить
procedure TForm1.Button1Click(Sender: TObject);
begin
   SetWindowPos( Handle, HWND_NOTOPMOST, Left, Top, Width, Height,
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );
end;
Отвечает: Трапезников Антон Сергеевич 
Могу предложить вам два способа:
1. Попробуйте использовать API функцию SetWindowPos(). Примерно так..
with MyForm do
  SetWindowPos(Handle,
    HWND_TOPMOST,
    Left,
    Top,
    Width,
    Height,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

Возможно вам понадобиться вызывать данную функцию в обработчиках события OnShow(), OnDeactivate(), и OnActivate() вашей формы.

2. Форма должна иметь нормальный стиль (normal style), необходимо лишь переписать процедуру CreateParams:

procedure TFloatingToolbar.CreateParams( var Params: TCreateParams );
begin
  inherited CreateParams( Params );
  with Params do
  begin
    Style := Style or ws_Overlapped;
    WndParent := MainForm.Handle;
  end;
end;
Отвечает: #One  
(Formstyle="fsStayOnTop)" в принципе работает. Но если какая-нить посторонняя прога сделает окно не плавающим, то повторное присвоение fsStayOnTop никакого результата не несёт. Лечится это следующим образом, например:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
//Делаем плавающее окно
  SetWindowPos(form1.Handle,hwnd_TopMost,left,top,form1.Width,form1.Height,swp_noActivate)
end;
Здесь вызов API функции, делающей окно поверх всех, в таймере, чтобы опять же какой-нить ScreenSaver не "расплавал" форму. А тик таймера делай на 30000 (30 сек). Удачи, чувак.
Вопрос № 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;

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

Отвечает: Евгений http://decoding.narod.ru 
var
F: TSearchRec;
r: ShortInt;
path: string;
begin
path:='some_path';
FindFirst(path+'\*.*', faAnyFile, F);
Memo.Lines.Add(F.Name);
repeat
r:=FindNext(F);
Memo.Lines.Add(F.Name);
until r<>0;
Find
Close(f);
end;

Первый параметр функции FindFirst - это маска, с которой сравниваются найденные файлы. А у тебя они с чем сравниваются? Посмотри на исправленный вариант и разберись.

Отвечает: Роман Антонов 
Ну я надеюсь под ‘some_path’ ты понимаешь именно полный путь с именем файла, а не только путь до него.
Если ‘some_path’ путь к каталогу и нужно найти все файлы каталога то будет так ‘some_path’+’*.*’;
И не забывай про слеш (\).

Параметр Attr функции FindFirst имеет следующие значения:
faReadOnly только для чтения
faHidden скрытый файл
faSysFile системный файл
faVolumeID идентификатор диска
faDirectory каталог
faArchive архивный файл
faAnyFile любой файл

А вообще для FindNext можно сделать так:

while FindNext(F) = 0 do Memo.Lines.Add(F.Name);
FindClose(F);


Тогда переменная r не понадобится.
Отвечает: Ленар 
В качестве пути нужно указать каталог + маску файла...
var
  F: TSearchRec;
  Path: string;
  Attr: Integer;
begin
  {Искать все файлы в заданной директории с расширение ..wav}
  Path := 'e:\audio\album31\*.wav';
  {которые имеют атрибуты "Только для чтения" и "Архивный"}
  Attr := faReadOnly + faArchive;

  FindFirst(Path, Attr, F);

  {Если хотя бы один файл найден, то продолжить поиск}
  if F.name <> '' then
  begin
    ListBox1.Items.Add(F.name); {Добавление в TListBox имени найденного файла}
    while FindNext(F) = 0 do
      ListBox1.Items.Add(F.name);
  end;
  FindClose(F);
end.
Отвечает: Трапезников Антон Сергеевич 
Здравствуйте, Константин.

В Delphi существует две функции для поиска файлов. Это:

function FindFirst(const Path: string; Attr: Integer;
var F: TSearchRec): Integer;


function FindNext(var F: TSearchRec): Integer;

Разберемся, что же означают эти функции. Для начала возьмем первую - FindFirst. Разберемся сначала с переменными.

Path
Это переменная, как видно из названия, показывающая путь к директории, где будет производиться поиск файла.
Кроме этого, в эту переменную входит также и имя файла (файлов), которые должны быть найдены. Причем, в
названии файла можно пользоваться такими символами: * (звездочка) и ? (знак вопроса). Значения этих символов
стандартны: знак вопроса - любой допустимый символ, звездочка - комбинация любых допустимых символов. Под допустимыми
символами я понимаю символы, которые могут использоваться в операционной системе для обозначения имен файлов.
Пример использования переменной Path:


{поиск файлов с любым именем в корне диска C:}
Path:='c:\*.*';

{поиск файлов в директории E:\AUDIO с именем, которое
начинается на song3, с расширением .wav}
Path:='e:\audio\song3?.wav';

Обратите внимание:

Недопустимо использовать символы * и ? в названии директории.
Эти символы могут использоваться только в имени файла.

Attr
Переменная задает тип файлов, которые будут найдены. Тип переменной - Integer.
Чтобы не мучаться с запоминанием цифр, рекомендую Вам запомнить такие слова:
faReadOnly - файлы, у которых установлен атрибут "Только для чтения".
faHidden - файлы, у которых установлен атрибут "Скрытые".
faSysFile - файлы, у которых установлен атрибут "Системный".
faArchive - файлы, у которых установлен атрибут "Архивный".
faDirectory - директория. То есть поиск поддиректорий в директории.
faAnyFile - любой файл (в том числе и faDirectory, и faVolumeID).
Теперь с этими словами можно обращаться как с цифрами - складывать их и вычитать. Например:

{поиск Скрытых и Системных файлов}
Attr := faHidden + faSysFile;

{поиск всех файлов, кроме файлов,
имеющих атрибут "Только для чтения"}
Attr := faAnyFile - faReadOnly;

Однако учтите:

При применении вычитания результат может получиться несколько неожиданным, поэтому им лучше не злоупотреблять.

Теперь разберемся, что же выдает функция. Функция возвращает 0, если была выполнена успешно, или, в
противном случае, код ошибки. Кроме того, если функция нашла файл, удовлетворяющий и условиям переменной Path,
и условиям переменной Attr, то она записывает результат в переменную F (типа TSearchRec), которая, естественно,
должна быть объявлена командой Var.

Тип TSearchRec можно представить как:

type TSearchRec = record
  Time: Integer;
  Size: Integer;
  Attr: Integer;
  name: TFileName;
  ExcludeAttr: Integer;
  FindHandle: THandle;
  FindData: TWin32FindData;
end;

Теперь разберемся, что означает функция FindNext.

Если команда FindFirst нашла какой-либо файл, то, возможно, если имя файла задано с символами * и/или ?, есть еще один или несколько файлов, удовлетворяющих условию поиска. В этом случае и используется команда FindNext. Функция также возвращает 0, если была выполнена успешно, или, в противном случае, код ошибки. И также записывает данные в переменную F.

Теперь, зная эти две команды, можно составить и алгоритм поиска заданного файла.

Простейший алгоритм:

var
  F: TSearchRec;
  Path: string;
  Attr: Integer;
begin
  {Искать все файлы в заданной директории с расширение .wav}
  Path := 'e:\audio\album31\*.wav';
  {которые имеют атрибуты "Только для чтения" и "Архивный"}
  Attr := faReadOnly + faArchive;

  FindFirst(Path, Attr, F);

  {Если хотя бы один файл найден, то продолжить поиск}
  if F.name <> '' then
  begin
    ListBox1.Items.Add(F.name); {Добавление в TListBox имени найденного файла}
    while FindNext(F) = 0 do
      ListBox1.Items.Add(F.name);
  end;
  FindClose(F);
end.
Обратите внимание на процедуру FindClose. Она освобождает память, которую заняли функции FindFirst и FindNext.
Отвечает:  Serg
Что-то какая то билеберда. А поточней как нибудь можно?
И нельзя ли воспользоваться уже известным велосипедом:
........... 
Found := FindFirst(Path, Attr, SearchRec);
    while Found = 0 do
    begin
      ProcessSearchRec(SearchRec);
      Found := FindNext(SearchRec);
    end;
Memo.Lines.Add(Found);
 ...........
Ну и так далее и тому подобное. Я не сомневаюсь, у вас всё получится ;)
Отвечает: DeadLord 
а я бы сделал так:
...
FindFirst(Mask,faAnyFile,F);
...

здесь Mask- маска, по которой ищем файлы, типа *.*, можно и с путём;
faAnyFile- флаг, показывающий, что искать любые файлы;

А вообще, читайте хелпы и да прибудет с вами сила!

Отвечает: Константин Владимирович 
Ну ещё бы это работало. Ж-) Ключевым элементом является Handle, который возвращает FindFirst(); Вот мой кусок кода, который работает (заполняет комбик CbWord wav-файлами, найденными в папке). Обратите внимание на hWav
CbWord.Clear;
   hWav := FindFirstFile(PAnsiChar(CbLetter.Items[CbLetter.ItemIndex] 
+ '\*.wav'),lpFindFileDataW);
   bWav := true;
   while bWav do
   begin
     CbWord.Items.Add(string(lpFindFileDataW.cFileName));
     bWav := FindNextFile(hWav,lpFindFileDataW);
   end;
   CbWord.ItemIndex := 0;
Отвечает: dasha ermakova 
Думаю, неправильно задана переменная path. Нужно задавать не только директорию, но и маску файла, например
FindFirst('c:\temp\*.doc',faAnyFile,f)
Отвечает: Вадим Шешунов 
Надо бы так:

var
F: TSearchRec;
r: ShortInt;
path: string;
begin
path:='some_path';
r:=FindFirst(path, 0, F);
while r = 0 do
begin
Memo.Lines.Add(F.Name);
r:=FindNext(F);
end;
FindClose(f);
end;

Отвечает:  Сергей
Попробуйте указывать не просто папку, а ещё и маску файлов, которые необходимо найти:
if FindFirst('some_path\*.txt', faAnyFile, F)=0 then begin
   Memo.Lines.Add(F.Name);
   while FindNext(F) = 0 do
         Memo1.Lines.Add( F.Name);
   end;
FindClose(F);
Вопрос № 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;

Отвечает: Евгений http://decoding.narod.ru 
function ST(): TDateTime;
var
st : TSYSTEMTIME;
SysTime: string;
begin
GetLocalTime(st);
SysTime:=IntToStr((st.wHour))+':'+IntToStr(st.wMinute)+':'+IntToStr(st.wSecond);
Result:=StrToTime(SysTime);
end;

Вместо GetSystemTime используй GetLocalTime.

Отвечает: Роман 
Есть такая штука TimeToStr(Now);
Она преобразует твое текущее время, именно по часам Windows (которые в трее), в строку.
Вот и все.
Отвечает: Трапезников Антон Сергеевич 
Нижеприведенная процедура возвращает местную и системную (по Гринвичу) дату:
var
  lt: TSYSTEMTIME;
  st: TSYSTEMTIME;
begin
  GetLocalTime(lt);
  GetSystemTime(st);
  Memo1.Lines.Add('LocalTime = ' +
    IntToStr(lt.wmonth) + '/' +
    IntToStr(lt.wDay) + '/' +
    IntToStr(lt.wYear) + ' ' +
    IntToStr(lt.wHour) + ':' +
    IntToStr(lt.wMinute) + ':' +
    IntToStr(lt.wSecond));
  Memo1.Lines.Add('UTCTime = ' +
    IntToStr(st.wmonth) + '/' +
    IntToStr(st.wDay) + '/' +
    IntToStr(st.wYear) + ' ' +
    IntToStr(st.wHour) + ':' +
    IntToStr(st.wMinute) + ':' +
    IntToStr(st.wSecond));
end;
Отвечает: dovgolutskyy  
Смотря что тебе именно надо, можно указать просто для времени
Result:=StrToTime(Time);
для даты
Result:=StrToTime(Date);
Отвечает: Вадим Шешунов 
А почему бы не использовать просто Time?
Отвечает:  Igoshin Konstantin
А почему Вы не хотите воспользоваться стандартными функциями Time и Date? Они возвращают системное время и дату.
Отвечает: Kuranov A.V. 
Функция GetSystemTime возвращает время по UTC, тоесть по Гринвичу.
Для возвращения локального время нужно использовать GetLocalTime(она аналогична GetSystemTime только возвращает локальное время), но лучше использовать функцию Now:
function ST: TDateTime;
begin
    Result:= Now;
end;
Отвечает:  СПУ
FormatDateTime('hh:mm:ss',Now);
Отвечает: cpo  
 ....
var
 d : TDateTime;
begin
 d := DateTime;
 Дальше надо декодировать дату со временем. В HELP`е есть описание
 нескольких методов.
 ...
 
end;
Отвечает: Лисицын Андрей Владимирович 
По-моему, из этого примера все ясно:
procedure TForm1.Button1Click(Sender: TObject);
var
  lt : TSYSTEMTIME;
  st : TSYSTEMTIME;
  S: string;
begin
  GetLocalTime(lt);
  GetSystemTime(st);
 
  Memo1.Lines.Clear;
 
  Memo1.Lines.Add('');
  Memo1.Lines.Add('');
 
  S := Format('Local time = %-2.2d.%-2.2d.%-4.4d %-2.2d:%-2.2d:%-2.2d.%-3.3d',
    [lt.wmonth, lt.wDay, lt.wYear, lt.wHour, lt.wMinute, lt.wSecond, lt.wMilliseconds]);
  Memo1.Lines.Add(S);
 
  S := Format('  UTC time = %-2.2d.%-2.2d.%-4.4d %-2.2d:%-2.2d:%-2.2d.%-3.3d',
    [st.wmonth, st.wDay, st.wYear, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds]);
  Memo1.Lines.Add(S);
end;


Статья:    "Добавляем пункты в системное меню Windows."
Вы, наверное, задавались вопросом, почему системное меню постоянно одно и тоже ? Пример показывает, как добавить туда такие пункты как "About" или "Information", или что-нибудь ещё.
Совместимость: Delphi 3.x (или выше)
Нам понадобится две вещи, первая это Item ID, который может быть любым целым числом. Второе это Описание(Caption) для нашего пункта меню. Нам понадобится также процедура, которая будет принимать сообщения Window для определения нажатия на наш пункт меню.

Unit OhYeah; 
Interface 
Uses 
    SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus; 
Type 
   TForm1 = Class (TForm) 

      Procedure FormCreate (Sender : TObject); 
     
   Private {Private declarations} 
   Public  {Public declarations} 
      Procedure WinMsg (Var Msg : TMsg; Var Handled : Boolean); 
      Procedure DoWhatEever; 
End; 

Var 
   Form1 : TForm1; 

Implementation 
{$R *.DFM} 
Const 
     ItemID = 99; // ID номер для пункта меню. Может быть любым 

Procedure Tform1.WinMsg (Var Msg : TMsg; Var Handled : Boolean); 
Begin 
     If Msg.Message = WM_SYSCOMMAND Then 
     If Msg.WParam = ItemID Then DoWhatEver; 
End; 

Procedure TForm1.FormCreate (Sender : TObject); 
Begin 
     Application.OnMessage := WinMsg; 
     AppendMenu (GetSystemMenu (Form1.Handle, False), MF_SEPARATOR, 0, ''); 
     AppendMenu (GetSystemMenu (Form1.Handle, False), MF_BYPOSITION, ItemID, '&My menu'); 
     AppendMenu (GetSystemMenu (Application.Handle, False), MF_SEPARATOR, 0, ''); 
     AppendMenu (GetSystemMenu (Application.Handle, False), MF_BYPOSITION, ItemID,'&My menu minimized'); 
End; 

Procedure TForm1.DoWhatEver; 
Begin 
     Exit;    // Вы можете добавить здесь всё, что угодно 
End; 
End.
Автор: MAD Rodrguez mail@mad666.net
Компоненты:   

ACM

Вы можете использовать эти компоненты для компрессии/декомпрессии аудио данных в реальном времени с использованием аудио-кодеков установленных в Windows.
Поддерживаемые версии: D4

AOSDK v.0.8

AOSDK v.0.8 это «базовые классы» основанные на библиотеке Bass.dll (Включена в архив). Предоставляет широки возможности для создание аудио-плеера.

Особенности:
  • Поддержка форматов плайлистов Pls и M3u,
  • 10 различных эквалайзеров
  • Быстрое декодирование аудио-потока
  • mp1/mp2/mp3/ogg/wav потоки
  • mod/s3m/it/umx/mo3/xm/mtm модули
  • Редактор тегов ID3 1.1
  • Поддержка Интернет потоков

Поддерживаемые версии: D2 D3 D4 D5 D6

SynEdit 2.0.2 beta

Существует такая библиотека компонентов, как SynEdit.
Это большая коллекция разнообразных компонентов для работы с текстом.

Основными возможностями этой библиотеки являются:
  • удобный редактор текста,
  • возможность подсветки заданного синтаксиса,
  • поиск и замена,
  • экспорт в RTF и HTML,
  • автозамена,
  • и многое другое...
Но! SynEdit для подсветки использует только зашитые в него схемы, то есть то, что может подсвечивать SynEdit определяется до компиляции, а готовой программе этого изменить уже будет нельзя.


UniHighlighter 2.0 alpha Full

Данный компонент, SynUniHighlighter, представляет собой универсальную подсветку для SynEdit, позволяющую менять себя динамически (то есть во время выполнения программы).

Плюс обладает полезными возможностями. Такими как:

  • сохранение/загрузка подсветки на диск
  • удобный визуальный редактор дерева правил подсветки
  • импорт из других форматов подсветки (пока поддерживаются EditPlus и UltraEdit)
  • и многое другое...

Исходники:   

AnipuskXP

Анимация кнопки "Пуск". Рисует на этой замечательной кнопке фон и отскакивающий от стенок шарик. Занимательная вещица :)


Help  

Справка по Delphi 6.3
Полная версия, не демо. Размер архива 2.67 Мб.

Данная справка входит в "Серию русских справок по Delphi" и является ее неотъемлемой составляющей. 
Демонстрационная версия справки содержится на диске, приложенном к книге Архангельского А.Я. "Программирование в Delphi 6". Материал данной справки частично вошел также в книгу Архангельского А.Я. "Delphi 6. Справочное пособие". Некоторые темы заимствованы из книги Архангельского А.Я. "Приемы программирования в Delphi. Версии 5 – 7". Но в основном тематика этой книги войдет в готовящуюся сейчас новую серию русских справок.

Справка не является переводом англоязычной справки, встроенной в среду Delphi, и не повторяет ее структуру и темы. Это оригинальный продукт, встраиваемый в среду Delphi 7 - 5 в дополнение к англоязычной справке и вызываемый из окон среды Delphi по нажатиям клавиши F1.
Приобретшие легальную версию справки получают бесплатную поддержку, включая бесплатные дополнения справки. Новая серия будет им поставлена на льготных условиях. 
Сведения по новым версиям, по условиям приобретения справки и по составу "Серии русских справок по Delphi" вы найдете на сайтах http://lab18.ipu.rssi.ru/help2/, http://delci.h1.ru, а также на сайте издательства БИНОМ www.binom-press.ru.


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

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

Никогда FIDO не брошу потому, что БОСС хороший!!!


Windows годится для всего, кроме работы.


Вот ДОС, котоpый постpоил Гейтс.
А вот и Винды, что садятся на ДОС, котоpый постpоил Гейтс.
Авот и ВинВоpд, что запyщен с Виндpов, что садятся на ДОС, котоpый постpоил
Гейтс.
А вот и ВоpдБейсик, что pаботает в Воpд, что запyщен с Виндpов, что садятся на
ДОС, котоpый постpоил Гейтс.
А вот и пpогpамма к ВоpдБейсик, что pаботает в Воpд, что запyщен с Виндpов, что садятся на ДОС, котоpый постpоил Гейтс.
А вот и ошыбка в пpогpамме к ВоpдБейсик, что pаботает в Воpд...
В общем все повисло.


Не работай под root'ом - козленочком станешь.


Если эта надпись уменьшается - ваш монитор уносят!


XVIII век.
Юный кавалеp в камзоле и паpике гадает на pомашке: "Любит - не любит..."
XIX век.
Молодой джентльмен в сюpтуке и цилиндpе гадает на pомашке: "Любит?
Меня - pазумеется! Даст - не даст..."
XX век.
Юноша в джинсах гадает на pомашке: "Любит? Кого эти пустяки интеpесуют!
Даст? Разумеется! Встанет - не встанет..."
XXI век.
Существо неопpеделенного вида смотpит на pомашку, эмблему ICQ, читает на монитоpе: "Я тебя люблю! Я тебя хочу! Давай встpетимся!" и гадает:
"Мужчина? Женщина? Активный? Пассивный?"


"Hу если и после этого останутся баги, то я не знаю что и делать" - сказал Билл Гйтс, глядя на форматируемый винчестер с последней версией Win2000


К большомy yдивлению социологов компьютеp высчитал, что сpеднестатистический
pоссиянин ходит в тyалет только по-сpеднемy.


Девушка-программер едет в трамвае, читает книгу. Старушка смотрит на девушку, смотрит на книгу,крестится и в ужасе выбегает на следующей остановке.
Девушка читала книгу "Язык Ада".



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

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

В избранное