<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Два студента пишут лабы &#187; Delphi</title>
	<atom:link href="http://www.studcode.ru/archiv/tag/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.studcode.ru</link>
	<description>Конспекты лекций, самостоятельные работы по  delphi, с++, php. Курсовые проекты. Все что мы сделали вы можете скачать без проблем!</description>
	<lastBuildDate>Wed, 27 Oct 2010 15:15:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Лексический анализ</title>
		<link>http://www.studcode.ru/archiv/leksicheskij-analiz-3/</link>
		<comments>http://www.studcode.ru/archiv/leksicheskij-analiz-3/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 17:02:15 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Построение компиляторов]]></category>
		<category><![CDATA[ASM]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=943</guid>
		<description><![CDATA[Лексический анализ
План
1.	Основная задача
2.	Классы лексем
3.	Построение анализатора
4.	Требования к таблице имен
5.	Структуры данных
6.	Реализация сканера
7.	Блок-схема
Основная задача лексического анализа – разбить входной текст, состоящий из последовательности одиночных символов, на последовательность слов, или лексем, т.е. выделить эти слова из непрерывной последовательности символов.
Все символы входной последовательности с этой точки зрения разделяются на символы, принадлежащие каким-либо лексемам, и символы, разделяющие лексемы (разделители). В некоторых [...]]]></description>
			<content:encoded><![CDATA[<p>Лексический анализ<br />
План<br />
1.	Основная задача<br />
2.	Классы лексем<br />
3.	Построение анализатора<br />
4.	Требования к таблице имен<br />
5.	Структуры данных<br />
6.	Реализация сканера<br />
7.	Блок-схема<br />
Основная задача лексического анализа – разбить входной текст, состоящий из последовательности одиночных символов, на последовательность слов, или лексем, т.е. выделить эти слова из непрерывной последовательности символов.<br />
Все символы входной последовательности с этой точки зрения разделяются на символы, принадлежащие каким-либо лексемам, и символы, разделяющие лексемы (разделители). В некоторых случаях между лексемами может  и не быть разделителей. С другой стороны, в некоторых языках лексемы могут содержать незначащие  символы (пробелы и комментарии). <span id="more-943"></span></p>
<h2>Классы лексем</h2>
<p>Обычно все  лексемы делятся на классы. Примерами таких классов являются:<br />
•	Служебные слова (одним типом или каждое служебное слово отдельным типом лексем, в который будет входить только одна лексема)<br />
•	Числа (целые, восьмеричные, шестнадцатиричные, действительные и т.д.),<br />
•	Идентификаторы,<br />
•	Строки.<br />
•	Другие литералы</p>
<h2>Построение анализатора</h2>
<p>Отдельно выделяются ключевые слова и символы пунктуации (иногда их называют символы-ограничители). Как правило, ключевые слова – это некоторое конечное подмножество идентификаторов. С точки зрения дальнейших фаз анализа лексический анализатор выдает информацию двух сортов:<br />
На вход лексическому анализатору подается<br />
•	Текст исходной программы;<br />
•	Список зарезервированных слов языка;<br />
•	Список служебных символов и символов разделителей.</p>
<p>На выходе лексического анализатор выдает:<br />
•	Последовательность классов лексем. (Ограничителей, ключевых слов, идентификаторов, литералов и т.д.)<br />
•	Таблица имен, содержащая уточняющую информацию для идентификаторов и возможно литералов.</p>
<p>В обязанность лексического анализатора так же входит игнорирование комментариев.<br />
Существует много способов построения лексического анализатора. Классическим является анализатор на основе автоматной модели и графа переходов. Достоинством такого подхода, является простота программы, но высокая сложность таблицы переходов. Такой подход рекомендуется при использовании  ассемблера.<br />
Мы будем рассматривать программный подход, в котором несколько усложняется программа, но нет необходимости строить и оптимизировать таблицы для автоматов.<br />
Лексический анализатор должен самостоятельно строить таблицы объектов (идентификаторов, строк, чисел и т.д.). В лексему помещается указатель на вход в соответствующую таблицу.</p>
<h3>Требования к таблице имен</h3>
<p>Таблица имен должна удовлетворять следующим требованиям<br />
•	Выполнять быстрый поиск;<br />
•	Быть динамически расширяемой;<br />
•	При обнаружении искомого имени возвращать адрес элемента таблицы;<br />
•	Добавлять новый элемент, если такого еще нет в таблице (когда разрешено);<br />
•	Хранить дополнительные атрибуты для контекстного анализа (например тип переменной, принадлежность ее области видимости);<br />
•	Иметь возможность хранить переменные достаточно большой длинны и при этом экономно использовать память. Иногда ограничения на длину переменной не вводят, но в идентификации участвуют только N первых символов.<br />
•	Возможно, иметь иерархическую структуру по областям видимости;<br />
•	Может быть, иметь несколько таблиц: для переменных, типов, имен подпрограмм, литералов и зарезервированных слов языка. Причем в последнюю добавлять конечно нельзя.</p>
<h2>Структуры данных</h2>
<p>Можно предложить следующую структуру данных для хранения лексемы</p>
<p>struct TTableMember{char *Name;<br />
TType Type;<br />
int FormalParams[10];<br />
int VisibleRegion;<br />
void *Value;<br />
};</p>
<p>enum TTableType{tVarName, tProcName, tLiteral};</p>
<p>enum TLextType{ltName, ltLiteral, ltIF, ltTHEN,<br />
ltELSE, ltWHILE, ltFOR, &#8230;};</p>
<p>struct TLexema{TLexType LexType;<br />
TTableType NameTable;<br />
int NinTable;<br />
};</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/leksicheskij-analiz-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Быстрая сортировка Хоара</title>
		<link>http://www.studcode.ru/archiv/bystraya-sortirovka-xoara-2/</link>
		<comments>http://www.studcode.ru/archiv/bystraya-sortirovka-xoara-2/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 18:40:48 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Лабораторные работы]]></category>
		<category><![CDATA[лабы]]></category>
		<category><![CDATA[сортировки]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=972</guid>
		<description><![CDATA[Задание: реализовать алгоритм быстрой сортировки Хоара на Delphi.


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure [...]]]></description>
			<content:encoded><![CDATA[<p><em>Задание</em>: реализовать алгоритм <a href="http://www.studcode.ru/archiv/bystraya-sortirovka-xoara/">быстрой сортировки Хоара</a> на Delphi.</p>
<p><span id="more-972"></span></p>
<pre><code>
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  const N=40;
var
  Form1: TForm1;
  mas: array[1..N] of integer;
implementation

{$R *.dfm}
procedure sort(l, r: integer);
var
  i,j,temp: integer;
  left: boolean;
begin
left:=true;
if (r-l)>=1 then
begin
 i:=l;
 j:=r;

 while i<>j do
   begin
    if left=true then begin
      if mas[i]<=mas[j] then
        begin
         j:=j-1;
        end
      else
        begin
         temp:=mas[i];
         mas[i]:=mas[j];
         mas[j]:=temp;
         inc(i);
         left:=false;
        end;
      end
      else
      begin
      if mas[i]<=mas[j] then
        begin
         inc(i);
        end
      else
        begin
         temp:=mas[i];
         mas[i]:=mas[j];
         mas[j]:=temp;
         j:=j-1;
         left:=true;
        end;
        end;
   end;
sort(l, i-1);
sort(j+1, r);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
randomize;
Label1.Caption:='';
for i:=1 to N do
  begin
   mas[i]:=random(100);
   Label1.Caption:=Label1.Caption+'  '+IntToStr(mas[i]);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
Label2.Caption:='';

sort(1,N);
for i:=1 to N do
  Label2.Caption:=Label2.Caption+'  '+IntToStr(mas[i]);
end;

end.

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/bystraya-sortirovka-xoara-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Однозначность грамматики и языка</title>
		<link>http://www.studcode.ru/archiv/odnoznachnost-grammatiki-i-yazyka/</link>
		<comments>http://www.studcode.ru/archiv/odnoznachnost-grammatiki-i-yazyka/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 13:30:07 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Построение компиляторов]]></category>
		<category><![CDATA[ASM]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=916</guid>
		<description><![CDATA[Однозначность грамматики и языка.
Одним из важных свойств грамматики с точки зрения трансляции является ее однозначность, означающая то, что не существует предложения, являющегося кроной двух или более деревьев вывода в данной грамматике. (Неоднозначность грамматики нельзя путать с неоднозначностью языка, порождаемого грамматикой. Язык неоднозначен, если его нельзя породить ни одной однозначной грамматикой. Таков, например, язык, состоящий из [...]]]></description>
			<content:encoded><![CDATA[<p>Однозначность грамматики и языка.<br />
Одним из важных свойств грамматики с точки зрения трансляции является ее однозначность, означающая то, что не существует предложения, являющегося кроной двух или более деревьев вывода в данной грамматике. (Неоднозначность грамматики нельзя путать с неоднозначностью языка, порождаемого грамматикой. Язык неоднозначен, если его нельзя породить ни одной однозначной грамматикой. Таков, например, язык, состоящий из всех цепочек аnbmck, в которых либо п = т, либо т = k.)<br />
<span id="more-916"></span><br />
Свойство однозначности грамматики может быть нарушено в результате эквивалентного преобразования. Например, для однозначной грамматики Г0 эквивалентной является неоднозначная грамматика, имеющая следующий набор правил:<br />
Е → Е + Е|Е * Е|(Е)|а. Действительно, для выражения а + а * а можно построить два разных дерева вывода (рис. 2.3). Содержательно это означает следующее: нельзя сказать, что выполняется в выражении а + а * а раньше: умножение или сложение. Преобразование,&#8217; нарушающее однозначность грамматики, почти всегда будет недопустимым.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/odnoznachnost-grammatiki-i-yazyka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Закрашивание замкнутых областей.</title>
		<link>http://www.studcode.ru/archiv/zakrashivanie-zamknutyx-oblastej/</link>
		<comments>http://www.studcode.ru/archiv/zakrashivanie-zamknutyx-oblastej/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 17:12:06 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Лабораторные работы]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=963</guid>
		<description><![CDATA[Замкнутая область задается границей определенного цвета или цветным пятном.
Простейший алгоритм заполнения называется алгоритм кораеда.
Алгоритм:

Добавить начальную полоску в список
Цикл, пока список не пустой


берем первую точку из списка(удаляем ее)
закрашиваем взятую точку
проверяем 4 точки вокруг и если их цвет не совпадает с цветом границыи она не закрашена, то добавляем ее в список.



unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, [...]]]></description>
			<content:encoded><![CDATA[<p>Замкнутая область задается границей определенного цвета или цветным пятном.</p>
<p>Простейший алгоритм заполнения называется алгоритм <span style="text-decoration: underline;"><strong>кораеда</strong></span>.</p>
<p><em>Алгоритм:</em></p>
<ul>
<li>Добавить начальную полоску в список</li>
<li>Цикл, пока список не пустой</li>
</ul>
<ol>
<li>берем первую точку из списка(удаляем ее)</li>
<li>закрашиваем взятую точку</li>
<li>проверяем 4 точки вокруг и если их цвет не совпадает с цветом границыи она не закрашена, то добавляем ее в список.</li>
</ol>
<p><span id="more-963"></span></p>
<pre><code>
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, jpeg, ExtCtrls, ColorGrd;

type
Stek = ^St;
    St=record
    x,y:integer;
    Next:Stek;
    end;
  TForm1 = class(TForm)
    Image1: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    first:stek;{ Public declarations }
    C1,C2:TColor;
    procedure Add (X1,Y1:integer);
    procedure Del (var X1,y1:integer);
  end;
var
  Form1: TForm1;
  MD: boolean;
implementation

{$R *.DFM}

procedure TForm1.Add(X1, Y1: integer);
var
 elem:Stek;
begin
   New (elem);
elem.x:=X1;
elem.y:=Y1;
elem.Next:=first;
first:=elem;
end;

procedure TForm1.Del(var X1, y1: integer);
var
x,y:integer;
elem:Stek;
begin
   if first <> nil then
   begin
   x1:=first.x;
   y1:=first.y;
   elem:=first;
   first:=first.Next;
   dispose (elem);
    end;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  X1,y1:integer;
  begin
  if Button=mbleft then
  begin
  MD:=true;
  Image1.Canvas.MoveTo(x,y);
  end
  else
  begin
  c2:=Image1.Canvas.Pixels[x,y];
  c1:=RGB(random(255),random(255),random(255));
  first:=nil;
  Add(x,y);
  while (first <> nil) do
  begin
  Del (x1,y1);
  Image1.Canvas.Pixels[x1,y1]:=C1;
  if (Image1.Canvas.Pixels[x1,y1-1]=C2) then
  Add (x1,Y1-1);
   if (Image1.Canvas.Pixels[x1,y1+1]=C2) then
  Add (X1,Y1+1);
  if (Image1.Canvas.Pixels[x1-1,y1]=C2)then
   Add (x1-1,y1);
  if (Image1.Canvas.Pixels[x1+1,y1]=C2)  then
  Add (x1+1,y1);
  end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
first:=nil;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if MD then
  Image1.Canvas.LineTo(x,y);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
MD:=false;
end;
end.

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/zakrashivanie-zamknutyx-oblastej/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Фрактальное дерево.</title>
		<link>http://www.studcode.ru/archiv/fraktalnoe-derevo/</link>
		<comments>http://www.studcode.ru/archiv/fraktalnoe-derevo/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 16:54:59 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Лабораторные работы]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=961</guid>
		<description><![CDATA[Фрактал &#8211; это графический объект состоящий из множества небольших объектов, каждый из которых выглядит как и сам большой объект.
Задание: нарисовать фрактальное дерево.


unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Фрактал</strong> &#8211; это графический объект состоящий из множества небольших объектов, каждый из которых выглядит как и сам большой объект.</p>
<p><em>Задание:</em> нарисовать фрактальное дерево.</p>
<p><span id="more-961"></span></p>
<pre><code>
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    //procedure fak(x, y, a, al, be, ga: integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  max:integer;  //густота ветвей, самая густая=1, чем больше тем убывает
implementation

{$R *.dfm}

Procedure Draw(x, y : Integer; l, u : real);//рекурсивная процедура рисавания всего изображения
Procedure lineto1(x, y : Integer; l, u : real); //процедура рисования линии по заданным координатам
Begin
   Form1.Canvas.MoveTo(x,y);
   Form1.Canvas.LineTo(Round(x + l * cos(u)), Round(y - l * sin(u)));
End;
Begin
   If l > max then
    Begin
      l := l * 0.7;
      lineto1(x, y, l, u);
      x := Round(x + l * cos(u));
      y := Round(y - l * sin(u));
      Draw(x, y, l, u + pi / strtoint(form1.edit2.text));{Угол поворота 1}
      Draw(x, y, l, u - pi / strtoint(form1.edit3.text));{Угол поворота 2}
   End;
end;
procedure TForm1.Button1Click(Sender: TObject);
var x1,y1,x2,y2:integer;
    a:real;
begin
form1.Canvas.Brush.Color:=clwhite;
form1.Canvas.Rectangle(0, 0, Form1.Width, Form1.Height);
max:=StrToInt(Edit1.Text); //водим число 1,2,3....
x1:=Form1.ClientWidth div 2; //середина формы
y1:=Form1.ClientHeight - 100; //100 пикселей от нижнего края
Draw(x1, y1, Form1.ClientHeight div 3, pi/2)//размер рисунка 2/3 высоты формы, самый оптимальный
end;                                         //угол между ветвями 90 град.

end.

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/fraktalnoe-derevo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ИНТЕРПОЛЯЦИОННЫЙ МНОГОЧЛЕН ЛАГРАНЖА. СХЕМА ЭЙТКЕНА.</title>
		<link>http://www.studcode.ru/archiv/interpolyacionnyj-mnogochlen/</link>
		<comments>http://www.studcode.ru/archiv/interpolyacionnyj-mnogochlen/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 16:50:12 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Лабораторные работы]]></category>
		<category><![CDATA[лабы]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=956</guid>
		<description><![CDATA[Задание: Вычислить  значения многочлена Лагранжа, аппроксимирующего функцию F(x), заданную своими  значениями yi=F(xi), i:=0..n. Вычисления проводить при x=xi,   i=0,&#8230;,n и при x= (xi   + xi+1)/2,  i=0,&#8230;,n-1.


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

type
  TForm1 = class(TForm)
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
  [...]]]></description>
			<content:encoded><![CDATA[<p><em>Задание</em>: Вычислить  значения многочлена Лагранжа, аппроксимирующего функцию F(x), заданную своими  значениями yi=F(xi), i:=0..n. Вычисления проводить при x=xi,   i=0,&#8230;,n и при x= (xi   + xi+1)/2,  i=0,&#8230;,n-1.</p>
<p><span id="more-956"></span></p>
<pre><code>
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus;

type
  TForm1 = class(TForm)
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  X_i: array [0..100] of real;
  Y_i: array [0..100] of real;
  col: integer;
implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
procedure draw();
var x1:    integer;
    y1:    real;
    q:     real;
    i,j:   integer;
begin
form1.Canvas.MoveTo(0,0);
for x1:=0 to form1.Width do
 begin y1:=0;
  for i:=0 to col-1 do
   begin q:=1;
    for j:=0 to col-1 do
     begin
      if i&lt;&gt;j then
       q:=q*(x1-X_i[j])/(X_i[i]-X_i[j]);
      end;
      y1:=y1+y_i[i]*q;
   end;
form1.Canvas.LineTo(x1,round(y1));
 end;
end;
begin
Canvas.Rectangle(0,0,Form1.Width,Form1.Height);
form1.Canvas.Ellipse(X-2,Y-2,X+2,Y+2);
X_i[col]:=X;
Y_i[col]:=Y;
inc(col);
draw;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
col:=0;
end;
end.
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/interpolyacionnyj-mnogochlen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание почтового клиента на Delphi</title>
		<link>http://www.studcode.ru/archiv/sozdanie-pochtovogo-klienta-na-delphi/</link>
		<comments>http://www.studcode.ru/archiv/sozdanie-pochtovogo-klienta-na-delphi/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:55:56 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Курсовые проекты]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[курсовые]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=577</guid>
		<description><![CDATA[Работа с почтой в Delphi 7
Основное предназначение электронной почты – дать пользователям возможность общаться друг с другом. Сам процесс общения происходит путем пересылки текстовых и прочих файлов, подобно тому, как при обычной почтовой переписке люди обмениваются письмами, открытками и прочей корреспонденцией. Уникальность электронной почты как сетевого сервиса, состоит в том, что за счет имеющихся шлюзовых [...]]]></description>
			<content:encoded><![CDATA[<h1>Работа с почтой в Delphi 7</h1>
<p>Основное предназначение электронной почты – дать пользователям возможность общаться друг с другом. Сам процесс общения происходит путем пересылки текстовых и прочих файлов, подобно тому, как при обычной почтовой переписке люди обмениваются письмами, открытками и прочей корреспонденцией. Уникальность электронной почты как сетевого сервиса, состоит в том, что за счет имеющихся шлюзовых соединений между различными сетями почта может доставляться практически в любые и из любых мировых сетей, объединяя их в единое сетевое пространство. Причем скорость доставки корреспонденции зависит не столько от физической удаленности почтовых серверов друг от друга, сколько от пропускной способностью тех узлов, через которые послание доставляется адресату. Другая особенность электронной почты – ее универсальность. Услугами почты можно воспользоваться как при постоянном, так и при сеансовом доступе к Сети.<br />
Темой курсового проекта является разработка почтового программы для операционной системы Windows.<br />
Цель: создать полноценный почтовый клиент для приема и отправки писем посредством протокола POP3. Организовать возможность отправки писем с вложениями, отправку и прием писем в формате HTML с актуальной кодировкой. Обеспечить автоматическую проверку почты через определенные моменты времени.<br />
<span id="more-577"></span><br />
Объектом курсового проекта является изучение почтовых протоколов SMTP, POP3, IMAP3 и создание приложения для получения и отправки сообщений с почтовых серверов.<br />
Предмет: Программное обеспечение системы<br />
Задачи. Для достижения цели нам пришлось решить следующие задачи:<br />
•	Изучить научную литературу<br />
•	Проанализировать программное обеспечение выпущенное ранее<br />
•	Подготовить схему выполнения<br />
•	Написать код программы<br />
•	Отладить и протестировать программу на наличие ошибок<br />
Описание основных алгоритмов<br />
Получение и отправка писем реализовано с помощью библиотеки Internet Direct 9 (INDY) и классов POP3 и SMTP встроенных в Delphi<br />
Получение писем</p>
<pre><code>begin
 WebBrowser1.Navigate('about:blank');
 POP3.Host:=popHost; // адресс почтового сервера
 POP3.Port:=popPort;           // порт по которому будет осуществляться подключение
 POP3.Username:=Username; // Логин пользователя
 POP3.Password:=Pass;   // пароль пользователя
 POP3.Connect; // подключение по протоколу POP3, по настрокам в компоненте IdPOP3, с именем POP3
 numPosts:=POP3.CheckMessages;
 Memo1.Clear;   // очистка компонента memo для отображения текста письма.
 Memo1.Lines.Add(inttostr(numPosts));
 StringGrid1.RowCount:=numPosts+1;
 for i:=1 to numPosts do
 begin
IdMessage.Clear; // очистка буфера для сообщения
POP3.Retrieve(i,IdMessage);  // получение одного сообщения
Memo1.Lines.AddStrings(IdMessage.Body); // передача сообщения из компонента IdMessage в memo
Stringgrid1.Cells[0,i]:=IdMessage.From.Name;
 	Stringgrid1.Cells[1,i]:=IdMessage.Subject;;
Stringgrid1.Cells[2,i]:=FormatDateTime('dd mmm', IdMessage.Date);//yyyy hh:mm:ss полная дата
 end;
 // вывод в компоненты Label информации о сообщении.
 Label1.Caption := IdMessage.From.Name;
 Label2.Caption := IdMessage.Recipients.EmailAddresses;

 Label4.Caption := IdMessage.Subject;
 Label5.Caption := FormatDateTime('dd mmm yyyy hh:mm:ss', IdMessage.Date);
 Label6.Caption := IdMessage.ReceiptRecipient.Text;
 Label7.Caption := IdMessage.Organization;

 POP3.Delete(1); // удаление с сервера, полученного сообщения
 POP3.Disconnect;   // разрыв связи</code></pre>
<p>Методы. Было выбрано использование два почтового протокола: POP3 для приема почты с сервера и SMTP для отправки на сервер.<br />
Гипотеза.  Программа предназначена для удобного чтения электронной почты, написанию и отправки писем адресатам.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/sozdanie-pochtovogo-klienta-na-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графика. Зеркальное отражение.</title>
		<link>http://www.studcode.ru/archiv/grafika-zervalnoe-otrazhenie/</link>
		<comments>http://www.studcode.ru/archiv/grafika-zervalnoe-otrazhenie/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:51:54 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=565</guid>
		<description><![CDATA[Тут как бы и писать особо нечего)
Входных параметров всего два: изображение и булева переменная. Если True, то отображение горизонтальное, иначе вертикальное.

Юзайте на здоровье

procedure FlipBitmap(Bitmap: TBitmap; FlipHor: Boolean);
{Зеркальное отражение изображения.
 Если FlipHor = True, то отражение по горизонтали,
 иначе по вертикали.}
var
  x, y, W, H: Integer;
  Pixel_1, Pixel_2: PRGBTriple;
  MemPixel: TRGBTriple;
begin
  Bitmap.PixelFormat [...]]]></description>
			<content:encoded><![CDATA[<p>Тут как бы и писать особо нечего)<br />
Входных параметров всего два: изображение и булева переменная. Если True, то отображение горизонтальное, иначе вертикальное.<br />
<span id="more-565"></span><br />
Юзайте на здоровье</p>
<pre><code>
procedure FlipBitmap(Bitmap: TBitmap; FlipHor: Boolean);
{Зеркальное отражение изображения.
 Если FlipHor = True, то отражение по горизонтали,
 иначе по вертикали.}
var
  x, y, W, H: Integer;
  Pixel_1, Pixel_2: PRGBTriple;
  MemPixel: TRGBTriple;
begin
  Bitmap.PixelFormat := pf24Bit;
  W := Bitmap.Width - 1;
  H := Bitmap.Height - 1;
  if FlipHor then {отражение по горизонтали}
    for y := 0 to H do
    begin
      {помещаем оба указателя на строку H:}
      Pixel_1 := Bitmap.ScanLine[y];
      Pixel_2 := Bitmap.ScanLine[y];
      {помещаем второй указатель в конец строки:}
      Inc(Pixel_2, W);
      {цикл идёт только до середины строки:}
      for x := 0 to W div 2 do
      begin
        {симметричные точки обмениваются цветами:}
        MemPixel := Pixel_1^;
        Pixel_1^ := Pixel_2^;
        Pixel_2^ := MemPixel;
        Inc(Pixel_1); {смещаем указатель вправо}
        Dec(Pixel_2); {смещаем указатель влево}
      end;
    end
  else {отражение по вертикали}
    {цикл идёт только до средней строки:}
    for y := 0 to H div 2 do
    begin
      {помещаем первый указатель на строку H,
       а второй на строку симметричную H:}
      Pixel_1 := Bitmap.ScanLine[y];
      Pixel_2 := Bitmap.ScanLine[H - y];
      for x := 0 to W do
      begin
        {симметричные точки обмениваются цветами:}
        MemPixel := Pixel_1^;
        Pixel_1^ := Pixel_2^;
        Pixel_2^ := MemPixel;
        Inc(Pixel_1); {смещаем указатель вправо}
        Inc(Pixel_2); {смещаем указатель вправо}
      end;
    end;
end;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/grafika-zervalnoe-otrazhenie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графика. Эффект инея.</title>
		<link>http://www.studcode.ru/archiv/grafika-effekt-ineya/</link>
		<comments>http://www.studcode.ru/archiv/grafika-effekt-ineya/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:46:06 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=559</guid>
		<description><![CDATA[Эффект инея так же может быть исспользована в качестве фильтра для графического редактора. Процедура как бы рассевает пиксили изображения в радиусе Hor, Ver: Integer;, тем самым создается эффект стекла или же инея, кому как удобней 

Пользуйтесь на здоровье&#8230;

procedure Disorder(Bitmap: TBitmap; Hor, Ver: Integer; BackColor: TColor);

  function RandomInRadius(Num, Radius: Integer): Integer;
  begin
   [...]]]></description>
			<content:encoded><![CDATA[<p>Эффект инея так же может быть исспользована в качестве фильтра для графического редактора. Процедура как бы рассевает пиксили изображения в радиусе Hor, Ver: Integer;, тем самым создается эффект стекла или же инея, кому как удобней <img src='http://www.studcode.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<span id="more-559"></span><br />
Пользуйтесь на здоровье&#8230;</p>
<pre><code>
procedure Disorder(Bitmap: TBitmap; Hor, Ver: Integer; BackColor: TColor);

  function RandomInRadius(Num, Radius: Integer): Integer;
  begin
    if Random(2) = 0 then
      Result := Num + Random(Radius)
    else
      Result := Num - Random(Radius);
  end;

type
  TRGB = record
    B, G, R: Byte;
  end;
  pRGB = ^TRGB;
var
  x, y, WW, HH, xr, yr: Integer;
  Dest1, Dest2, Src1, Src2: PRGB;
  Bmp: TBitmap;
begin
  Randomize;
  Bitmap.PixelFormat := pf24Bit;
  Bmp := TBitmap.Create;
  try
    Bmp.Assign(Bitmap);
    WW := Bitmap.Width - 1;
    HH := Bitmap.Height - 1;
    Bitmap.Canvas.Brush.Color := BackColor;
    Bitmap.Canvas.FillRect(Rect(0, 0, WW + 1, HH + 1));
    for y := 0 to HH do
    begin
      for x := 0 to WW do
      begin
        xr := RandomInRadius(x, Hor);
        yr := RandomInRadius(y, Ver);
        if (xr >= 0) and (xr < WW) and (yr >= 0) and (yr < HH) then
        begin
          Src1 := Bmp.ScanLine[y];
          Src2 := Bmp.ScanLine[yr];
          Dest1 := Bitmap.ScanLine[y];
          Dest2 := Bitmap.ScanLine[yr];
          Inc(Src1, x);
          Inc(Src2, xr);
          Inc(Dest1, x);
          Inc(Dest2, xr);
          Dest1^ := Src2^;
          Dest2^ := Src1^;
        end;
      end;
    end;
  finally
    Bmp.Free;
  end;
end;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/grafika-effekt-ineya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графика. Эффект блоков.</title>
		<link>http://www.studcode.ru/archiv/grafika-effekt-blokov/</link>
		<comments>http://www.studcode.ru/archiv/grafika-effekt-blokov/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:35:13 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=554</guid>
		<description><![CDATA[В ходе выполнения курсового проекта (Графический редактор) мной был разработан фильтр для преобразования BMP изображений. Данный фильтр позволяет получить эффект блоков. Выполнен он в виде небольшой процедуры, которая работает с блоками пикселей.
Процедуре передается 5 параметров: Bitmap: TBitmap;(наше изображение); Hor, Ver:  Integer;(размеры наших блоков); MaxOffset:  Integer;(на сколько пикселей будем смещать); BackColor:TColor);(цвет, которым будем закрашивать [...]]]></description>
			<content:encoded><![CDATA[<p>В ходе выполнения курсового проекта (Графический редактор) мной был разработан фильтр для преобразования BMP изображений. Данный фильтр позволяет получить эффект блоков. Выполнен он в виде небольшой процедуры, которая работает с блоками пикселей.<br />
Процедуре передается 5 параметров: Bitmap: TBitmap;(наше изображение); Hor, Ver:  Integer;(размеры наших блоков); MaxOffset:  Integer;(на сколько пикселей будем смещать); BackColor:TColor);(цвет, которым будем закрашивать промежутки).<br />
<span id="more-554"></span></p>
<pre><code>
procedure Blocks(Bitmap: TBitmap; Hor, Ver, MaxOffset:
  Integer; BackColor: TColor);
{вырезаем прямоугольники со сторонами Hor Ver
и копируем их в радиусе MaxOffset}

  function RandomInRadius(Num, Radius: Integer): Integer;
  begin
    if Random(2) = 0 then
      Result := Num + Random(Radius)
    else
      Result := Num - Random(Radius);
  end;

var
  x, y, xd, yd: Integer;
  Bmp: TBitmap;
begin
  Bmp := TBitmap.Create;
  try
    Bmp.Assign(Bitmap);
    Bitmap.Canvas.Brush.Color := BackColor;
    Bitmap.Canvas.FillRect(Rect(0, 0, Bitmap.Width, Bitmap.Height));
    xd := (Bitmap.Width - 1) div Hor;
    yd := (Bitmap.Height - 1) div Ver;
    Randomize;
    for x := 0 to xd do
      for y := 0 to yd do
        BitBlt(Bitmap.Canvas.Handle,
          RandomInRadius(Hor * x, MaxOffset),
          RandomInRadius(Ver * y, MaxOffset),
          Hor, Ver, Bmp.Canvas.Handle, Hor * x, Ver * y, SRCCOPY);
  finally
    Bmp.Free;
  end;
end;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/grafika-effekt-blokov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

