» Главная
eXcode.ru » Статьи » Delphi/Pascal » Большой FAQ по Delphi » Синтаксис » Преобразования
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 8





Преобразование сигнала в спекр и обратно (методы Хартли, Фурье и классический)




Автор: Denis Furman


{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O-,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+
,Z1}

{$MINSTACKSIZE $00004000}

{$MAXSTACKSIZE $00100000}

{$IMAGEBASE $00400000}

{$APPTYPE GUI}

unit Main;

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, ExtCtrls, ComCtrls, Menus;

type

  TfmMain = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    StatusBar1: TStatusBar;
    N3: TMenuItem;
    imgInfo: TImage;
    Panel1: TPanel;
    btnStart: TSpeedButton;
    procedure btnStartClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  end;

var

  fmMain: TfmMain;

implementation

uses PFiles;

{$R *.DFM}

function Power2(lPower: Byte): LongInt;

begin
  Result := 1 shl lPower;
end;

procedure ClassicDirect(var aSignal, aSpR, aSpI: array of Double; N:
  LongInt);

var
  lSrch: LongInt;
var
  lGarm: LongInt;
var
  dSumR: Double;
var
  dSumI: Double;
begin
  for lGarm := 0 to N div 2 - 1 do
  begin
    dSumR := 0;
    dSumI := 0;
    for lSrch := 0 to N - 1 do
    begin
      dSumR := dSumR + aSignal[lSrch] * Cos(lGarm * lSrch / N * 2 * PI);
      dSumI := dSumI + aSignal[lSrch] * Sin(lGarm * lSrch / N * 2 * PI);
    end;
    aSpR[lGarm] := dSumR;
    aSpI[lGarm] := dSumI;
  end;
end;

procedure ClassicInverce(var aSpR, aSpI, aSignal: array of Double; N:
  LongInt);

var
  lSrch: LongInt;
var
  lGarm: LongInt;
var
  dSum: Double;
begin
  for lSrch := 0 to N - 1 do
  begin
    dSum := 0;
    for lGarm := 0 to N div 2 - 1 do
      dSum := dSum
        + aSpR[lGarm] * Cos(lSrch * lGarm * 2 * Pi / N)
        + aSpI[lGarm] * Sin(lSrch * lGarm * 2 * Pi / N);
    aSignal[lSrch] := dSum * 2;
  end;
end;

function InvertBits(BF, DataSize, Power: Word): Word;

var
  BR: Word;
var
  NN: Word;
var
  L: Word;
begin
  br := 0;
  nn := DataSize;
  for l := 1 to Power do
  begin
    NN := NN div 2;
    if (BF >= NN) then
    begin
      BR := BR + Power2(l - 1);
      BF := BF - NN
    end;
  end;
  InvertBits := BR;
end;

procedure FourierDirect(var RealData, VirtData, ResultR, ResultV: array of
  Double; DataSize: LongInt);

var
  A1: Real;
var
  A2: Real;
var
  B1: Real;
var
  B2: Real;
var
  D2: Word;
var
  C2: Word;
var
  C1: Word;
var
  D1: Word;
var
  I: Word;
var
  J: Word;
var
  K: Word;
var
  Cosin: Real;
var
  Sinus: Real;
var
  wIndex: Word;
var
  Power: Word;
begin
  C1 := DataSize shr 1;
  C2 := 1;
  for Power := 0 to 15 //hope it will be faster then
  round(ln(DataSize) / ln(2))
    do
    if Power2(Power) = DataSize then
      Break;
  for I := 1 to Power do
  begin
    D1 := 0;
    D2 := C1;
    for J := 1 to C2 do
    begin
      wIndex := InvertBits(D1 div C1, DataSize, Power);
      Cosin := +(Cos((2 * Pi / DataSize) * wIndex));
      Sinus := -(Sin((2 * Pi / DataSize) * wIndex));
      for K := D1 to D2 - 1 do
      begin
        A1 := RealData[K];
        A2 := VirtData[K];
        B1 := ((Cosin * RealData[K + C1] - Sinus * VirtData[K + C1]));
        B2 := ((Sinus * RealData[K + C1] + Cosin * VirtData[K + C1]));
        RealData[K] := A1 + B1;
        VirtData[K] := A2 + B2;
        RealData[K + C1] := A1 - B1;
        VirtData[K + C1] := A2 - B2;
      end;
      Inc(D1, C1 * 2);
      Inc(D2, C1 * 2);
    end;
    C1 := C1 div 2;
    C2 := C2 * 2;
  end;
  for I := 0 to DataSize div 2 - 1 do
  begin
    ResultR[I] := +RealData[InvertBits(I, DataSize, Power)];
    ResultV[I] := -VirtData[InvertBits(I, DataSize, Power)];
  end;
end;

procedure Hartley(iSize: LongInt; var aData: array of Double);

type
  taDouble = array[0..MaxLongInt div SizeOf(Double) - 1] of Double;
var
  prFI, prFN, prGI: ^taDouble;
var
  rCos, rSin: Double;
var
  rA, rB, rTemp: Double;
var
  rC1, rC2, rC3, rC4: Double;
var
  rS1, rS2, rS3, rS4: Double;
var
  rF0, rF1, rF2, rF3: Double;
var
  rG0, rG1, rG2, rG3: Double;
var
  iK1, iK2, iK3, iK4: LongInt;
var
  iSrch, iK, iKX: LongInt;
begin
  iK2 := 0;
  for iK1 := 1 to iSize - 1 do
  begin
    iK := iSize shr 1;
    repeat
      iK2 := iK2 xor iK;
      if (iK2 and iK) <> 0 then
        Break;
      iK := iK shr 1;
    until False;
    if iK1 > iK2 then
    begin
      rTemp := aData[iK1];
      aData[iK1] := aData[iK2];
      aData[iK2] := rTemp;
    end;
  end;
  iK := 0;
  while (1 shl iK) < iSize do
    Inc(iK);
  iK := iK and 1;
  if iK = 0 then
  begin
    prFI := @aData;
    prFN := @aData;
    prFN := @prFN[iSize];
    while Word(prFI) < Word(prFN) do
    begin
      rF1 := prFI^[0] - prFI^[1];
      rF0 := prFI^[0] + prFI^[1];
      rF3 := prFI^[2] - prFI^[3];
      rF2 := prFI^[2] + prFI^[3];
      prFI^[2] := rF0 - rF2;
      prFI^[0] := rF0 + rF2;
      prFI^[3] := rF1 - rF3;
      prFI^[1] := rF1 + rF3;
      prFI := @prFI[4];
    end;
  end
  else
  begin
    prFI := @aData;
    prFN := @aData;
    prFN := @prFN[iSize];
    prGI := prFI;
    prGI := @prGI[1];
    while Word(prFI) < Word(prFN) do
    begin
      rC1 := prFI^[0] - prGI^[0];
      rS1 := prFI^[0] + prGI^[0];
      rC2 := prFI^[2] - prGI^[2];
      rS2 := prFI^[2] + prGI^[2];
      rC3 := prFI^[4] - prGI^[4];
      rS3 := prFI^[4] + prGI^[4];
      rC4 := prFI^[6] - prGI^[6];
      rS4 := prFI^[6] + prGI^[6];
      rF1 := rS1 - rS2;
      rF0 := rS1 + rS2;
      rG1 := rC1 - rC2;
      rG0 := rC1 + rC2;
      rF3 := rS3 - rS4;
      rF2 := rS3 + rS4;
      rG3 := Sqrt(2) * rC4;
      rG2 := Sqrt(2) * rC3;
      prFI^[4] := rF0 - rF2;
      prFI^[0] := rF0 + rF2;
      prFI^[6] := rF1 - rF3;
      prFI^[2] := rF1 + rF3;
      prGI^[4] := rG0 - rG2;
      prGI^[0] := rG0 + rG2;
      prGI^[6] := rG1 - rG3;
      prGI^[2] := rG1 + rG3;
      prFI := @prFI[8];
      prGI := @prGI[8];
    end;
  end;
  if iSize < 16 then
    Exit;
  repeat
    Inc(iK, 2);
    iK1 := 1 shl iK;
    iK2 := iK1 shl 1;
    iK4 := iK2 shl 1;
    iK3 := iK2 + iK1;
    iKX := iK1 shr 1;
    prFI := @aData;
    prGI := prFI;
    prGI := @prGI[iKX];
    prFN := @aData;
    prFN := @prFN[iSize];
    repeat
      rF1 := prFI^[000] - prFI^[iK1];
      rF0 := prFI^[000] + prFI^[iK1];
      rF3 := prFI^[iK2] - prFI^[iK3];
      rF2 := prFI^[iK2] + prFI^[iK3];
      prFI^[iK2] := rF0 - rF2;
      prFI^[000] := rF0 + rF2;
      prFI^[iK3] := rF1 - rF3;
      prFI^[iK1] := rF1 + rF3;
      rG1 := prGI^[0] - prGI^[iK1];
      rG0 := prGI^[0] + prGI^[iK1];
      rG3 := Sqrt(2) * prGI^[iK3];
      rG2 := Sqrt(2) * prGI^[iK2];
      prGI^[iK2] := rG0 - rG2;
      prGI^[000] := rG0 + rG2;
      prGI^[iK3] := rG1 - rG3;
      prGI^[iK1] := rG1 + rG3;
      prGI := @prGI[iK4];
      prFI := @prFI[iK4];
    until not (Word(prFI) < Word(prFN));
    rCos := Cos(Pi / 2 / Power2(iK));
    rSin := Sin(Pi / 2 / Power2(iK));
    rC1 := 1;
    rS1 := 0;
    for iSrch := 1 to iKX - 1 do
    begin
      rTemp := rC1;
      rC1 := (rTemp * rCos - rS1 * rSin);
      rS1 := (rTemp * rSin + rS1 * rCos);
      rC2 := (rC1 * rC1 - rS1 * rS1);
      rS2 := (2 * (rC1 * rS1));
      prFN := @aData;
      prFN := @prFN[iSize];
      prFI := @aData;
      prFI := @prFI[iSrch];
      prGI := @aData;
      prGI := @prGI[iK1 - iSrch];
      repeat
        rB := (rS2 * prFI^[iK1] - rC2 * prGI^[iK1]);
        rA := (rC2 * prFI^[iK1] + rS2 * prGI^[iK1]);
        rF1 := prFI^[0] - rA;
        rF0 := prFI^[0] + rA;
        rG1 := prGI^[0] - rB;
        rG0 := prGI^[0] + rB;
        rB := (rS2 * prFI^[iK3] - rC2 * prGI^[iK3]);
        rA := (rC2 * prFI^[iK3] + rS2 * prGI^[iK3]);
        rF3 := prFI^[iK2] - rA;
        rF2 := prFI^[iK2] + rA;
        rG3 := prGI^[iK2] - rB;
        rG2 := prGI^[iK2] + rB;
        rB := (rS1 * rF2 - rC1 * rG3);
        rA := (rC1 * rF2 + rS1 * rG3);
        prFI^[iK2] := rF0 - rA;
        prFI^[0] := rF0 + rA;
        prGI^[iK3] := rG1 - rB;
        prGI^[iK1] := rG1 + rB;
        rB := (rC1 * rG2 - rS1 * rF3);
        rA := (rS1 * rG2 + rC1 * rF3);
        prGI^[iK2] := rG0 - rA;
        prGI^[0] := rG0 + rA;
        prFI^[iK3] := rF1 - rB;
        prFI^[iK1] := rF1 + rB;
        prGI := @prGI[iK4];
        prFI := @prFI[iK4];
      until not (LongInt(prFI) < LongInt(prFN));
    end;
  until not (iK4 < iSize);
end;

procedure HartleyDirect(
  var aData: array of Double;

  iSize: LongInt);
var
  rA, rB: Double;
var
  iI, iJ, iK: LongInt;
begin
  Hartley(iSize, aData);
  iJ := iSize - 1;
  iK := iSize div 2;
  for iI := 1 to iK - 1 do
  begin
    rA := aData[ii];
    rB := aData[ij];
    aData[iJ] := (rA - rB) / 2;
    aData[iI] := (rA + rB) / 2;
    Dec(iJ);
  end;
end;

procedure HartleyInverce(
  var aData: array of Double;

  iSize: LongInt);

var
  rA, rB: Double;
var
  iI, iJ, iK: LongInt;
begin
  iJ := iSize - 1;
  iK := iSize div 2;
  for iI := 1 to iK - 1 do
  begin
    rA := aData[iI];
    rB := aData[iJ];
    aData[iJ] := rA - rB;
    aData[iI] := rA + rB;
    Dec(iJ);
  end;
  Hartley(iSize, aData);
end;

//not tested

procedure HartleyDirectComplex(real, imag: array of Double; n: LongInt);
var
  a, b, c, d: double;

  q, r, s, t: double;
  i, j, k: LongInt;
begin

  j := n - 1;
  k := n div 2;
  for i := 1 to k - 1 do
  begin
    a := real[i];
    b := real[j];
    q := a + b;
    r := a - b;
    c := imag[i];
    d := imag[j];
    s := c + d;
    t := c - d;
    real[i] := (q + t) * 0.5;
    real[j] := (q - t) * 0.5;
    imag[i] := (s - r) * 0.5;
    imag[j] := (s + r) * 0.5;
    dec(j);
  end;
  Hartley(N, Real);
  Hartley(N, Imag);
end;

//not tested

procedure HartleyInverceComplex(real, imag: array of Double; N: LongInt);
var
  a, b, c, d: double;

  q, r, s, t: double;
  i, j, k: longInt;
begin
  Hartley(N, real);
  Hartley(N, imag);
  j := n - 1;
  k := n div 2;
  for i := 1 to k - 1 do
  begin
    a := real[i];
    b := real[j];
    q := a + b;
    r := a - b;
    c := imag[i];
    d := imag[j];
    s := c + d;
    t := c - d;
    imag[i] := (s + r) * 0.5;
    imag[j] := (s - r) * 0.5;
    real[i] := (q - t) * 0.5;
    real[j] := (q + t) * 0.5;
    dec(j);
  end;
end;

procedure DrawSignal(var aSignal: array of Double; N, lColor: LongInt);

var
  lSrch: LongInt;
var
  lHalfHeight: LongInt;
begin
  with fmMain do
  begin
    lHalfHeight := imgInfo.Height div 2;
    imgInfo.Canvas.MoveTo(0, lHalfHeight);
    imgInfo.Canvas.Pen.Color := lColor;
    for lSrch := 0 to N - 1 do
    begin
      imgInfo.Canvas.LineTo(lSrch, Round(aSignal[lSrch]) + lHalfHeight);
    end;
    imgInfo.Repaint;
  end;
end;

procedure DrawSpector(var aSpR, aSpI: array of Double; N, lColR, lColI:
  LongInt);

var
  lSrch: LongInt;
var
  lHalfHeight: LongInt;
begin
  with fmMain do
  begin
    lHalfHeight := imgInfo.Height div 2;
    for lSrch := 0 to N div 2 do
    begin
      imgInfo.Canvas.Pixels[lSrch, Round(aSpR[lSrch] / N) + lHalfHeight] :=
        lColR;

      imgInfo.Canvas.Pixels[lSrch + N div 2, Round(aSpI[lSrch] / N) +
        lHalfHeight] := lColI;

    end;
    imgInfo.Repaint;
  end;
end;

const
  N = 512;
var
  aSignalR: array[0..N - 1] of Double; //
var
  aSignalI: array[0..N - 1] of Double; //
var
  aSpR, aSpI: array[0..N div 2 - 1] of Double; //
var
  lFH: LongInt;

procedure TfmMain.btnStartClick(Sender: TObject);

const
  Epsilon = 0.00001;
var
  lSrch: LongInt;
var
  aBuff: array[0..N - 1] of ShortInt;
begin
  if lFH > 0 then
  begin
    //   Repeat

    if F.Read(lFH, @aBuff, N) <> N then
    begin
      Exit;
    end;
    for lSrch := 0 to N - 1 do
    begin
      aSignalR[lSrch] := ShortInt(aBuff[lSrch] + $80);
      aSignalI[lSrch] := 0;
    end;

    imgInfo.Canvas.Rectangle(0, 0, imgInfo.Width, imgInfo.Height);
    DrawSignal(aSignalR, N, $D0D0D0);

    //    ClassicDirect(aSignalR, aSpR, aSpI, N);                 //result in aSpR & aSpI,
    aSignal unchanged
      //    FourierDirect(aSignalR, aSignalI, aSpR, aSpI, N);       //result in aSpR &
    aSpI, aSiggnalR & aSignalI modified

    HartleyDirect(aSignalR, N); //result in source aSignal ;-)

    DrawSpector(aSignalR, aSignalR[N div 2 - 1], N, $80, $8000);
    DrawSpector(aSpR, aSpI, N, $80, $8000);

    {    for lSrch := 0 to N div 2 -1 do begin                    //comparing classic & Hartley

    if (Abs(aSpR[lSrch] - aSignal[lSrch]) > Epsilon)
    or ((lSrch > 0) And (Abs(aSpI[lSrch] - aSignal[N - lSrch]) > Epsilon))
    then MessageDlg(′Error comparing′,mtError,[mbOK],-1);
    end;}

    HartleyInverce(aSignalR, N); //to restore original signal with
    HartleyDirect
      //    ClassicInverce(aSpR, aSpI, aSignalR, N);                //to restore original
    signal with ClassicDirect or FourierDirect

    for lSrch := 0 to N - 1 do
      aSignalR[lSrch] := aSignalR[lSrch] / N; //scaling

    DrawSignal(aSignalR, N, $D00000);
    Application.ProcessMessages;
    //   Until False;

  end;
end;

procedure TfmMain.FormCreate(Sender: TObject);

begin
  lFH := F.Open(′input.pcm′, ForRead);
end;

procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);

begin
  F.Close(lFH);
end;

end.

К началу статьи





Добавил: LedWormДата публикации: 2005-11-10 19:44:40

Рейтинг статьи:0.00 [Голосов 0]Кол-во просмотров: 9181
Оцените статью:

Комментарии читателей

Всего комментариев: 1264

2017-12-13 14:01:21
MichaelMal

ОРИГИНАЛ. Кукла L.O.L. Surprise: писает, плачет, меняет цвет и брызгается ХИТ 2017, 2018 года!
оригинал купить Lol www.kukla-lol.ofo.by или копии продают?
Спасибо за ответ!
Хочу купить куклу LOL оригинал или копия.
Куклы Лол Сюрприз в шарике купить в Минске недорого! Оригинальные куклы LOL Surprise в шаре от MGA, низкие цены, доставка в Беларуси!

2017-12-13 14:01:14
MichaelMal

ОРИГИНАЛ. Кукла L.O.L. Surprise: писает, плачет, меняет цвет и брызгается ХИТ 2017, 2018 года!
оригинал купить Lol www.kukla-lol.ofo.by или копии продают?
Спасибо за ответ!
Хочу купить куклу LOL оригинал или копия.
Куклы Лол Сюрприз в шарике купить в Минске недорого! Оригинальные куклы LOL Surprise в шаре от MGA, низкие цены, доставка в Беларуси!

2017-12-13 02:15:55
PeterDer
В известный во всём мире праздник «День Святого Валентина» влюблённые обмениваются фигурными открытками в виде сердечка, дарят друг другу конфеты, игрушки или другие подарки, которые подчеркивают символичность их любви и верности…, подробнее читайте на сайте [url=http://fi-hi.ru]fi-hi.ru[/url]

2017-12-12 20:06:24
Andreidrilm
Одним из основных направлений нашей работы, является предоставление манипулятора в СПб, и мы его хорошо освоили. Секрет популярности нашей работы довольно прост, поскольку, позволяет избавиться от лишней техники, при выполнении задачи, с которой справится сам манипулятор http://www.manipulator-47.ru .
[url=http://www.manipulator-47.ru][img]http://s001.radikal.ru/i193/1712/60/87da0c4840c1.jpg[/img][/url]

2017-12-12 11:57:09
AlbertDer
Производство всех видов электромонтажного
оборудования для прокладки кабеля
[url=astraelektrik.pulscen.ru]перфошвеллер[/url]

[URL=http://astra-electric.ru/index.php?id_product=27&amp;controller=product]лоток кабельный нлп[/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=64]полка кабельная к1161[/URL]

[URL=http://astra-electric.ru/index.php?id_category=42&amp;controller=category]лоток кабельный[/URL]

[URL=http://astra-electric.ru/index.php?id_product=56&amp;controller=product][/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=64]полки для кабельных лотков[/URL]

[URL=http://astra-electric.ru/index.php?id_product=71&amp;controller=product]швеллер оцинкованный[/URL]

[URL=http://astra-electric.ru/index.php?id_category=42&amp;controller=category]лоток сплошной[/URL]

[URL=http://astra-electric.ru/index.php?id_product=71&amp;controller=product]швеллер перфорированный[/URL]

[URL=http://astra-electric.ru/index.php?id_product=56&amp;controller=product]короб металлический[/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=64]стойки для кабельных лотков[/URL]

[URL=http://astra-electric.ru/index.php?id_category=41&amp;controller=category]перфорированные лотки[/URL]




[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=64]полка кабельная к1161[/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=73]перфоуголок оцинкованный[/URL]

[URL=http://astra-electric.ru/index.php?id_category=41&amp;controller=category]перфорированный лоток для кабеля[/URL]

[URL=http://astra-electric.ru/index.php?id_product=56&amp;controller=product]короб кп[/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=73]перфоуголок оцинкованный[/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=87]кабельные каналы[/URL]

[URL=http://astra-electric.ru/index.php?id_category=40&amp;controller=category]лоток кабельный нл[/URL]

[URL=http://astra-electric.ru/]перфорированная[/URL]

[URL=http://astra-electric.ru/index.php?id_category=40&amp;controller=category]лоток лестничного типа[/URL]

[URL=http://astra-electric.ru/index.php?id_category=41&amp;controller=category]лотки перфорированные[/URL]

[URL=http://astra-electric.ru/index.php?id_category=42&amp;controller=category]лоток кабельный[/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=64]полки для кабельных лотков[/URL]

[URL=http://astra-electric.ru/index.php?controller=product&amp;id_product=86]лоток металлический перфорированный цена[/URL]

[URL=http://astra-electric.ru/index.php?id_product=37&amp;controller=product]лоток глухой оцинкованный[/URL]

[URL=http://astra-electric.ru/index.php?id_category=41&amp;controller=category]лотки перфорированные[/URL]

[URL=http://astra-electric.ru/index.php?id_product=37&amp;controller=product]лотки металлические[/URL]

[URL=http://astra-electric.ru/index.php?id_product=27&amp;controller=product]лоток кабельный нлп[/URL]



[URL=http://astra-electric.mcdir.ru/profil-montazhnyj/462-profilperforirovannyj-u-obraznyj-ms-404025-u2s11-2.html]Профильперфорированный u-образный ms 404025 u2s11 (2-перф.)[/URL]

[URL=http://astra-electric.mcdir.ru/kabelnye-koroba/]Кабельные короба &raquo; Производство всех видов электромонтажного оборудования для прокладки кабеля[/URL]

[URL=http://astra-electric.mcdir.ru/izdelija-gjem/335-konsol-kv-konsol-vertikalnaja.html]Консоль КВ (консоль вертикальная)[/URL]

[URL=http://astra-electric.mcdir.ru/index.php?do=cat&category=koroba-kkb]Короба ККБ &raquo; Производство всех видов электромонтажного оборудования для прокладки кабеля[/URL]

[URL=http://astra-electric.mcdir.ru/koroba-kkb/327-korob-uglovoj-kkb-ugv-kkb-ugn-2.html]Короб угловой ККБ-УГВ/ККБ-УГН[/URL]

2017-12-12 10:55:56
snegironmi
Добрый день дамы и господа[url=http://www.steklodel.by]![/url]
Наша фирма занимается свыше 10 лет продажей изделий из стекла в городе Минске.Вот основные виды подукции ,которую мы можем предложить вам:
1)[url=http://www.steklodel.by]Стеклянные двери[/url] –это распашные,раздвижные двери и входные группы. Стеклянные двери преображают и визуально расширяют помещение. Оригинальный внешний вид и визуальная легкость дверей из стекла подойдут к любому интерьеру.
2)[url=http://www.steklodel.by]Стеклянные козырьки[/url]-такие как козырьки на растяжках,козырьки в триплекс. Стеклянные козырьки приобретают по той причине, что они не только защищают входную дверь от погодных сюрпризов, но и элегантно смотрятся на любом фасаде.
3)[url=http://www.steklodel.by]Стеклянные перегородки[/url] –они включают в себя офисные перегородки,перегородки для банков,душевые перегородки и перегородки в интерьер. Стеклянные перегородки становятся неотъемлемой частью современных офисов, торговых центров, развлекательных и спортивных учреждений. Перегородки из стекла придают прозрачность помещениям любой планировки.
4)[url=http://www.steklodel.by]Стеклянные лестницы[/url] -стеклянные лестницы и лестничные ограждения из стекла, а также ограждения балконов и второго света — это прекрасное, современное решение, как для офисных и развлекательных центров, так и для дач или частных домов.
http://xn-----7kcbvsnbfz3ate1fyd.xn--p1ai/user/snegirokny/
http://antsir.ru/index/8-71087
http://court.uv.gov.mn/user/kapriolbhp/
http://bd-server.com/user/kapriolfnn/
http://all-infowow.ru/index/8-50286

2017-12-12 01:22:39
snegironlz
Привет друзья[url=http://www.steklodel.by]![/url]
Наша контора занимается свыше 10 лет продажей изделий из стекла в городе Минске.Вот основные виды подукции ,которую мы можем предложить вам:
1)[url=http://www.steklodel.by]Стеклянные двери[/url] –это распашные,раздвижные двери и входные группы. Стеклянные двери преображают и визуально расширяют помещение. Оригинальный внешний вид и визуальная легкость дверей из стекла подойдут к любому интерьеру.
2)[url=http://www.steklodel.by]Стеклянные козырьки[/url]-такие как козырьки на растяжках,козырьки в триплекс. Стеклянные козырьки приобретают по той причине, что они не только защищают входную дверь от погодных сюрпризов, но и элегантно смотрятся на любом фасаде.
3)[url=http://www.steklodel.by]Стеклянные перегородки[/url] –они включают в себя офисные перегородки,перегородки для банков,душевые перегородки и перегородки в интерьер. Стеклянные перегородки становятся неотъемлемой частью современных офисов, торговых центров, развлекательных и спортивных учреждений. Перегородки из стекла придают прозрачность помещениям любой планировки.
4)[url=http://www.steklodel.by]Стеклянные лестницы[/url] -стеклянные лестницы и лестничные ограждения из стекла, а также ограждения балконов и второго света — это прекрасное, современное решение, как для офисных и развлекательных центров, так и для дач или частных домов.
http://famill.ru/index/8-37219
http://forum.cacaoweb.org/index.php?action=profile;u=62315
http://jcboard.ru/index/8-1655
http://www.felezyabforum.com/members/kaprioluuq.html
http://phistory.info/user/kapriolryv/

2017-12-09 07:58:30
agrohimpfm
Привет товарищи!
Минеральные удобрения– вещества, имеющие неорганическую природу происхождения. Они традиционно используются в сельском хозяйстве, так как являются более доступными, чем органические, дают быстрый положительный эффект, и имеют широкий спектр действия. Также их гораздо удобнее и дешевле транспортировать.
1)[url=http://agro-himiya.by]аммиачная селитра купить в минске [/url] - Минеральные удобрения купить в Минске можно самовывозом в течении 20 минут, либо c оперативной доставкой.Покупая у нас, вы можете заказать товар, как оптом, так и в розницу. Крупным заказчикам всегда предоставляются скидки в объеме соответствующей величине сделки между нами.
2)[url=http://agro-himiya.by]минеральные удобрения купить Минск[/url] - Мы предлагаем вам приобрести только комплексные препараты, позволяющие полностью насытить потребности растения после обработки. Наши поставщики имеют в штате квалифицированных специалистов, способных точно произвести расчёты и анализ почвы, а на основе этих показателей создать для вас удобрения с идеальным набором макро- и микроэлементов.
3)[url=http://agro-himiya.by]неорганические удобрения купить[/url] - Каждый товар проходит тщательные клинические испытания на различных видах почв и только после этого запускается в серийное производство. Вы можете использовать нашу продукцию не только в целях крупной агрокорпорации с тысячами гектаров земли, но и для облагораживания приусадебного участка, дачных посевов.
4)[url=http://agro-himiya.by]минеральные удобрения в Беларуси[/url] - Мы заботимся о том, чтобы предоставляемый нами сервис был высокого уровня. В этом нам помогает наличие главного офиса, складов для готовой продукции, сети дилеров. Кроме того, мы дорожим своей репутацией и несем ответственность за качество нашего товара.
Мы будем рады Вас видеть у нас на вебресурсе [url=http://agro-himiya.by]НАЖМИТЕ ССЫЛКУ[/url]
Увидимся!
http://9-dragons.com.tw/forum/profile.php?mode=viewprofile&u=261746
http://gameteam.pev.pl/profile.php?lookup=683
http://koshkanusya.ru/forum/memberlist.php?mode=viewprofile&u=226474
http://kino-mir.esy.es/user/agrohimmce/
http://imperiumcraft.16mb.com/user/agrohimkvl/

2017-12-09 02:27:16
ArtemNef
Сегодня утром просматривал содержание инет, и к своему восторгу открыл замечательный ресурс. Вот посмотрите: [url=https://steam-zona.ru/genres/minecraft]Майнкрафт ключ[/url] . Для меня вышеуказанный сайт показался довольно оригинальным. До свидания!

2017-12-08 22:55:20
agrohimbah
Здравствуйте дамы и господа!
Минеральные удобрения– вещества, имеющие неорганическую природу происхождения. Они традиционно используются в сельском хозяйстве, так как являются более доступными, чем органические, дают быстрый положительный эффект, и имеют широкий спектр действия. Также их гораздо удобнее и дешевле транспортировать.
1)[url=http://agro-himiya.by]аммиачная селитра купить в минске [/url] - Минеральные удобрения купить в Минске можно самовывозом в течении 20 минут, либо c оперативной доставкой.Покупая у нас, вы можете заказать товар, как оптом, так и в розницу. Крупным заказчикам всегда предоставляются скидки в объеме соответствующей величине сделки между нами.
2)[url=http://agro-himiya.by]минеральные удобрения купить Минск[/url] - Мы предлагаем вам приобрести только комплексные препараты, позволяющие полностью насытить потребности растения после обработки. Наши поставщики имеют в штате квалифицированных специалистов, способных точно произвести расчёты и анализ почвы, а на основе этих показателей создать для вас удобрения с идеальным набором макро- и микроэлементов.
3)[url=http://agro-himiya.by]неорганические удобрения купить[/url] - Каждый товар проходит тщательные клинические испытания на различных видах почв и только после этого запускается в серийное производство. Вы можете использовать нашу продукцию не только в целях крупной агрокорпорации с тысячами гектаров земли, но и для облагораживания приусадебного участка, дачных посевов.
4)[url=http://agro-himiya.by]минеральные удобрения в Беларуси[/url] - Мы заботимся о том, чтобы предоставляемый нами сервис был высокого уровня. В этом нам помогает наличие главного офиса, складов для готовой продукции, сети дилеров. Кроме того, мы дорожим своей репутацией и несем ответственность за качество нашего товара.
Мы будем рады Вас видеть у нас на вебресурсе [url=http://agro-himiya.by]НАЖМИТЕ ССЫЛКУ[/url]
Увидимся!
http://zestaphoni.com/user/agrohimuum/
http://rscmed.com/profile.php?id=154442
http://www.laborlawtalk.com/member.php?u=455115
http://dildosh.uz/user/agrohimdih/
http://swviii.swrpgs.net/forums/profile.php?mode=viewprofile&u=212751
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Какая OS удобнее, на ваш взгляд?
MS Windows / Vista
66% (194)
Linux
19% (57)
SunOS
1% (3)
QNX
1% (2)
BSD
4% (12)
MacOS
3% (8)
BeOS
1% (3)
Unix
1% (2)
Другая
4% (13)

Проголосовало: 294
Windows CE + Windows ME + Windows NT = Windows CEMENT.
Рейтинг: 5.6/10 (5)
Посмотреть все анекдоты