Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двумерное преобразование Фурье 
V
    Опции темы
IvanoffAndrey
Дата 15.5.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



В 2005 году уже был подобный пост на этом форуме, однако он остался без ответа.
подскажите пожалуйста если кто использовала двумерное преобразование Фурье и какие библиотеки, может у кого кусок кода есть?
Есть библиотека FTW но не получается ее подключить.
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
Alexeis
Дата 15.5.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(IvanoffAndrey @  15.5.2009,  18:22 Найти цитируемый пост)
Есть библиотека FTW но не получается ее подключить. 

  Тут есть заголовки для делфи и пример.
http://www.koders.com/delphi/fid6797070FD5...s=algorithm#L37


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
IvanoffAndrey
Дата 15.5.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



та библиотека которая у меня есть не компилируется, а где достать сразу dll которая в этих примерах используется?
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
Alexeis
Дата 15.5.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459





--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
IvanoffAndrey
Дата 15.5.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



Мной был скчан 32-bit version: fftw-3.2.1-dll.zip (1.8MB) 
в файле fftw_s эспортируются функции из бибилотеки с имемнем 'fftw3f'
а у меня в папке только libfftw3f-3.dll
Более того компилятор (Turbo Delphi) ругается на некоторые директивы из fftw_s.pas:
Код

{$CALLING cdecl} {Saves some typing.}

{$MACRO on}

Закомментировал эти директивы.
Следующая ошибка:
кусок коды из fftw_s.pas:

Код

{Complex to complex transformations.}
function fftw_plan_dft_1d(n:cardinal;i,o:Pcomplex_single;
                          sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_1d';
function fftw_plan_dft_2d(nx,ny:cardinal;i,o:Pcomplex_single;
                          sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_2d';
function fftw_plan_dft_3d(nx,ny,nz:cardinal;i,o:Pcomplex_single;
                          sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_3d';

function fftw_plan_dft(rank:cardinal;n:Pcardinal;i,o:Pcomplex_single;
                       sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft';

{Real to complex transformations.}
function fftw_plan_dft_1d(n:cardinal;i:Psingle;o:Pcomplex_single;
                          flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_r2c_1d';
function fftw_plan_dft_2d(nx,ny:cardinal;i:Psingle;o:Pcomplex_single;
                          flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_r2c_2d';
function fftw_plan_dft_3d(nx,ny,nz:cardinal;i:Psingle;o:Pcomplex_single;
                          flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_r2c_3d';
function fftw_plan_dft(rank:cardinal;n:Pcardinal;i:Psingle;o:Pcomplex_single;
                       flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_r2c';


Пишет ошибки линковщика:
говорит что функции не помечены как перегружаемые?
Подскажите как исправить?
и что делать с разными именами библиотек - просто переименовать так как надо чтобы было?
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
Alexeis
Дата 15.5.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



{$CALLING cdecl} по идее нельзя просто так убрать, иначе не поймет параметры. Ее нужно просто заменить на cdecl после каждой функции.

Подозреваю что ошибка из-за этого

Добавлено через 7 секунд
Код

{$LINKLIB fftw3f}

{Required libraries by libfftw3}
{$LINKLIB gcc}
{$LINKLIB c}
{$LINKLIB m}



Добавлено через 1 минуту и 30 секунд
Функции точно из этой библиотеки, имена совпадают, так что не нужно волноваться. Сорцы вроде для fpc, так что чуток напильником и будет работать.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
IvanoffAndrey
Дата 15.5.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



пометил все функции как Overload,
новая ошибка:
procedure fftw_getmem(var p:pointer;size:Integer ); из fftw_s.pas
не обнаруживается, пишет :
[Pascal Error] Project1.dpr(12): E2033 Types of actual and formal var parameters must be identical
Очень прошу помочь разобраться.

Добавлено через 3 минуты и 55 секунд
Да и в этом тоже месте ошибка.

Код

{$LINKLIB fftw3f}
{Required libraries by libfftw3}
{$LINKLIB gcc}
{$LINKLIB c}
{$LINKLIB m}

тоже не пропускается,

Цитата

{$CALLING cdecl} по идее нельзя просто так убрать, иначе не поймет параметры. Ее нужно просто заменить на cdecl после каждой функции.

не совсем понял как это?

Добавлено через 5 минут и 22 секунды
пишет что CALLING - неверная директива

Добавлено через 7 минут и 40 секунд
Код сейчас вот в каком состоянии:
Код

unit fftw_s;
{
   FFTW - Fastest Fourier Transform in the West library

   This interface unit is (C) 2005 by Daniel Mantione
     member of the Free Pascal development team.

   See the file COPYING.FPC, included in this distribution,
   for details about the copyright.

   This file carries, as a independend work calling a well
   documented binary interface, the Free Pascal LGPL license
   with static linking exception.

   Note that the FFTW library itself carries the GPL license
   and can therefore not be used in non-GPL software.
}

{*****************************************************************************}
                                    interface
{*****************************************************************************}

{$CALLING cdecl} {Saves some typing.}

{$MACRO on}
{$INLINE on}

type    complex_single=record
          re,im:single;
        end;
        Pcomplex_single=^complex_single;

        fftw_plan_single=type pointer;

        fftw_sign=(fftw_backward=1,fftw_forward=$ffffffff);

        fftw_flag=(fftw_measure,            {generated optimized algorithm}
                   fftw_destroy_input,      {default}
                   fftw_unaligned,          {data is unaligned}
                   fftw_conserve_memory,    {needs no explanation}
                   fftw_exhaustive,         {search optimal algorithm}
                   fftw_preserve_input,     {don't overwrite input}
                   fftw_patient,            {generate highly optimized alg.}
                   fftw_estimate);          {don't optimize, just use an alg.}
        fftw_flagset=set of fftw_flag;
                   

{Complex to complex transformations.}
function fftw_plan_dft_1d(n:cardinal;i,o:Pcomplex_single;
                          sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_1d';
         Overload;
function fftw_plan_dft_2d(nx,ny:cardinal;i,o:Pcomplex_single;
                          sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_2d';
         Overload;
function fftw_plan_dft_3d(nx,ny,nz:cardinal;i,o:Pcomplex_single;
                          sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft_3d';
         Overload  ;

function fftw_plan_dft(rank:cardinal;n:Pcardinal;i,o:Pcomplex_single;
                       sign:fftw_sign;flags:fftw_flagset):fftw_plan_single;
         external 'fftw3f' name 'fftwf_plan_dft';
         Overload  ;

{Real to complex transformations.}
function fftw_plan_dft_1d(n:cardinal;i:Psingle;o:Pcomplex_single;
                          flags:fftw_flagset):fftw_plan_single;
                          Overload
         external 'fftw3f' name 'fftwf_plan_dft_r2c_1d';
function fftw_plan_dft_2d(nx,ny:cardinal;i:Psingle;o:Pcomplex_single;
                          flags:fftw_flagset):fftw_plan_single;
                          Overload;
         external 'fftw3f' name 'fftwf_plan_dft_r2c_2d';
function fftw_plan_dft_3d(nx,ny,nz:cardinal;i:Psingle;o:Pcomplex_single;
                          flags:fftw_flagset):fftw_plan_single;
                          Overload;
         external 'fftw3f' name 'fftwf_plan_dft_r2c_3d';
function fftw_plan_dft(rank:cardinal;n:Pcardinal;i:Psingle;o:Pcomplex_single;
                       flags:fftw_flagset):fftw_plan_single;
                       Overload;
         external 'fftw3f' name 'fftwf_plan_dft_r2c';

{Complex to real transformations.}
function fftw_plan_dft_1d(n:cardinal;i:Pcomplex_single;o:Psingle;
                          flags:fftw_flagset):fftw_plan_single;
                          Overload;
         external 'fftw3f' name 'fftwf_plan_dft_c2r_1d';
function fftw_plan_dft_2d(nx,ny:cardinal;i:Pcomplex_single;o:Psingle;
                          flags:fftw_flagset):fftw_plan_single;
                          Overload;
         external 'fftw3f' name 'fftwf_plan_dft_c2r_2d';
function fftw_plan_dft_3d(nx,ny,nz:cardinal;i:Pcomplex_single;o:Psingle;
                          flags:fftw_flagset):fftw_plan_single;
                          Overload;
         external 'fftw3f' name 'fftwf_plan_dft_c2r_3d';
function fftw_plan_dft(rank:cardinal;n:Pcardinal;i:Pcomplex_single;o:Psingle;
                       flags:fftw_flagset):fftw_plan_single;
                       Overload;
         external 'fftw3f' name 'fftwf_plan_dft_c2r';


procedure fftw_destroy_plan(plan:fftw_plan_single);
          external 'fftw3f' name 'fftwf_destroy_plan';
procedure fftw_execute(plan:fftw_plan_single);
          external 'fftw3f' name 'fftwf_execute';
          procedure fftw_getmem(var p:pointer;size:Integer );

{*****************************************************************************}
                                  implementation
{*****************************************************************************}

{$LINKLIB fftw3f}

{Required libraries by libfftw3}
{$LINKLIB gcc}
{$LINKLIB c}
{$LINKLIB m}

{$calling register} {Back to normal!}

{Better don't use fftw_malloc and fftw_free, but provide Pascal replacements.}

{$IF defined(cpui386) or defined(cpupowerpc)}
  {$DEFINE align:=16}
{$ENDIF}

procedure fftw_getmem(var p:pointer;size:Integer );

begin
{$IFDEF align}
  getmem(p,size+16-1);
  ptruint(p):=(ptruint(p)+align-1) and not (align-1);
{$ELSE}
  getmem(p,size);
{$ENDIF}
end;

procedure fftw_freemem(p:pointer);inline;

begin
  freemem(p);
end;

end.

--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
IvanoffAndrey
Дата 15.5.2009, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



чтото вроде получилось запустить закомментив многие директивы в том числе и CallLIB
теперь говорит, что
fftwf_execute - не можем найти точку входа в библиотеке?
Ребята диплом пишу, очень прошу помогите!
Сам написать БПФ не успеваю уже.
MatLab к Delphi не подсоединяется, уже столько всего перепробовал.
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
IvanoffAndrey
Дата 16.5.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



Ребята удалось запустить. Всем большое спасибо.
Вот код:
Код

program fftw_example;
{$APPTYPE CONSOLE}

 uses
      SysUtils;
      //fftw_interface in 'fftw_interface.pas',
      // fftw_s in 'fftw_s.pas';
type
fftw_complex = record
    re, im: Double;
  end;
  pfftw_complex = ^fftw_complex;

  fftw_plan = type Pointer;

const
  FFTW_FORWARD = WORD(-1);
  FFTW_BACKWARD = 1;

  FFTW_MEASURE = 0;
  FFTW_DESTROY_INPUT = 1; {1U << 0}
  FFTW_UNALIGNED = 2; {1U << 1}
  FFTW_CONSERVE_MEMORY = 4; {1U << 2}
  FFTW_EXHAUSTIVE = 8; {1U << 3} {NO_EXHAUSTIVE is default }
  FFTW_PRESERVE_INPUT = 16; {1U << 4} {cancels FFTW_DESTROY_INPUT}
  FFTW_PATIENT = 32; {1U << 5} {IMPATIENT is default }
  FFTW_ESTIMATE = 64; {1U << 6}

const
  fftw3f = 'libfftw3-3.dll';

function fftw_malloc(n: LongWord): Pointer; cdecl;
external fftw3f Name 'fftw_malloc';
procedure fftw_free(P: Pointer); cdecl;
external fftw3f Name 'fftw_free';

procedure fftw_destroy_plan(plan: fftw_plan); cdecl;
external fftw3f Name 'fftw_destroy_plan';
procedure fftw_execute(plan: fftw_plan); cdecl;
external fftw3f Name 'fftw_execute';

function fftw_plan_dft_r2c_2d(n0, n1: Integer; _in: PDouble; _out: pfftw_complex;
  flags: LongWord): fftw_plan; cdecl; external fftw3f Name 'fftw_plan_dft_r2c_2d';
function fftw_plan_dft_c2r_2d(n0, n1: Integer; _in: pfftw_complex; _out: PDouble;
  flags: LongWord): fftw_plan; cdecl; external fftw3f Name 'fftw_plan_dft_c2r_2d';


type
  TDoubleArray = array of array of  Double;
  TComplexArray =array of array of fftw_complex;


var
InArr: TDoubleArray;
OutArr: TComplexArray;
lInLength,lOutLength,I,J:Integer;
plan: fftw_plan;
begin

  SetLength(InArr,3,3);
  for i := 0 to 2 do begin
    writeln('');
    for j := 0 to 2 do begin
      InArr[i][j] := i;
      write (' ');
      write (InArr[i][j]:8:4);
    end;
  end;
  writeln('');
  SetLength(OutArr,3,3);
  plan := fftw_plan_dft_r2c_2d(3,3,@InArr[0][0],@outArr[0][0],FFTW_FORWARD);
  fftw_execute(plan);

   for i := 0 to 2 do begin
    writeln('');
    for j := 0 to 2 do begin
      write (' ');
      write (OutArr[i][j].re :8:2 );
      write ('+');
      write (OutArr[i][j].im :8:2 );
      write ('i');
      write ('|')
    end;
  end;


Только не понимаю почему получаемые результаты не соотносятся с результатами из MatLab ?
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
IvanoffAndrey
Дата 16.5.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



Вот например подаю симметричное поле:
A =

     0     1     2
     1     2     3
     2     3     4

МатЛаб дает ответ:
18                                              -4.5 +      2.5980i                       -4.5 -      2.5980i
-4.5 +     2.5980i                          0                                                   0                         
-4.5 -      2.5980i                          0                                                   0   

А из Delphi Вот что получается:

 9.00+    0.00i|    -1.50+   -0.87i|     0.00+    3.46i|
 0.00+   -3.46i|    -4.50+    0.87i|     0.00+    0.00i|
 0.00+    0.00i|     0.00+    0.00i|     0.00+    0.00i|

похожие числа то есть но похоже чтото не так с передачей массива в функцию?                      


--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
IvanoffAndrey
Дата 16.5.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



Ребята помогите разобраться с функцией fftw_plan_dft_r2c_2d
ей нужно передавать массивы специальных размеров как я понял,
не могу разобраться
сейчас изучаю MatLab and FFTW
но с моим английским эт надолго.
там человек описывает ситуацию аналогичную моей.
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
Alexeis
Дата 16.5.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



IvanoffAndrey, в модуле не зря были 2е функции 
fftw_getmem и fftw_freemem

Выделять память под массивы нужно именно ими. Например входной массив 3 x 3 будет выделяется так

Код

InArr := fftw_getmem(3 * 3 * sizeof(Double));

Array of array создает массив указателей, а нам нужен цельный блок.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
IvanoffAndrey
Дата 16.5.2009, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



Так спасибо, это и подозревал. Плохо работаю я просто  с указателями в дельфе. Я сам то сишник, поэтому траблы.
А как будет выглядеть тогда заполнение массива выделенного таким образом?

Добавлено через 10 минут и 5 секунд
Блин ребят подскажите как заполнить такой массив числами:
Код

pInArr := fftw_malloc (nX*nY*sizeof(double));
  for i := 0 to nX*nY - 1 do begin

  end;

Что в цикле то писать у мя ниче не получается.

Добавлено через 13 минут и 41 секунду
Код

var
pInArr: ^Double;

то есть pInArr - указатель на Дабл число. - первое число в массиве.
а функция 
Код

fftw_plan_dft_r2c_2d

принимает только Pointer, а PDouble не пропускает.
Alexeis - помоги плиз, очень надо, вторые сутки безрезультатно сижу.

Это сообщение отредактировал(а) IvanoffAndrey - 16.5.2009, 21:09
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
Alexeis
Дата 16.5.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(IvanoffAndrey @  16.5.2009,  20:08 Найти цитируемый пост)
принимает только Pointer, а PDouble не пропускает.

  В чем проблема? Привести типы да и все Pointer(pInArr) точно также как и  в С++.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
IvanoffAndrey
Дата 17.5.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: 1
Всего: 2



Ребята вссем спасибо. Разобрался. Нужно просто было одномерные массивы использовать. тогда все работает.
Память можно и SetLength выделять.
--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0961 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.