On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 4
Зарегистрирован: 05.08.08
ссылка на сообщение  Отправлено: 12.05.09 10:16. Заголовок: Нужен конвертер DBF в XLS


Добрый день,
нужен конвертер формата DBF (консольный xHarbour) в формат XLS, с перекодировкой из 866 в 1251
Спасибо...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 105 , стр: 1 2 3 4 5 6 All [только новые]





Пост N: 21
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 28.09.11 02:13. Заголовок: Элементарные операци..


Элементарные операции. Копия из текста одной утилиты.
Начало работы
	// 
oExcel := TOleAuto():New( "Excel.Application" )
oBook:=oExcel:WorkBooks:Add() //новая пустая книга
//подогнать количество листов под количестко точек измерения
k:=oBook:Sheets:Count //количество листов в новой книге
do while (oBook:Sheets:Count)<len(aTmp) //листов меньше чем точек измерения - добавить
oBook:Sheets:Add()
enddo

Если нужно - добавляй еще новые книги - oBook1, oBook2, ...
----------
заполнение и форматирование ячеек
	Row1:=3 //начало таблицы 
for mpi:=1 to len(aTmp) //пойти по точкам измерения
oSheet:=oBook:Worksheets(mpi) //выбрать лист номер mpi
oSheet:name:=aTmp[mpi] //имя листа изменить

//рисуем "шкалу часов"
oSheet:Cells( Row1, 1 ):Value:="час суток"
oSheet:Cells( Row1, 1 ):set('WrapText',.t.)
oSheet:Cells( Row1, 1 ):BorderAround( xlContinuous, xlThin)
oSheet:Cells( Row1, 1 ):Borders(xlEdgeBottom):Weight := xlMedium
oSheet:Cells( Row1, 1 ):Borders(xlEdgeRight):LineStyle := xlDouble
for i:=1 to 24 //часы суток
oSheet:Cells( Row1+i, 1 ):Value:=i
//oSheet:Cells( Row1+i, 1 ):Borders(xlEdgeBottom):Weight := xlMedium
oSheet:Cells( Row1+i, 1 ):Borders(xlEdgeRight):LineStyle := xlDouble
next
//рисуем данные
for i:=1 to len(aRes) //перебрать даты
oSheet:Cells( Row1, 1+i ):Value:=aRes[i,1] //дата
oSheet:Cells( Row1, 1+i ):Set( "VerticalAlignment", xlCenter)
oSheet:Cells( Row1, 1+i ):BorderAround( xlContinuous, xlThin)
oSheet:Cells( Row1, 1+i ):Borders(xlEdgeBottom):Weight := xlMedium
//найти ветку нужной точки измерения
if (j:=aScan(aRes[ i ],{|x| x[1]=aTmp[mpi]}))=0
loop
endif
//значения за дату
k:=1
do while k<=len(aRes[i,j,2])
if aRes[i,j,2,k,3]=2 //за час просуммированы два измерения
oSheet:Cells( Row1+aRes[i,j,2,k,1], 1+i ):Value:=aRes[i,j,2,k,2]
endif
//oSheet:Cells( Row1+aRes[i,j,2,k,1], 1+i ):BorderAround( xlContinuous, xlThin)
k++
enddo
next

//=СЧЁТ(RC[-10]:RC[-1])
//=СУММ(RC[-11]:RC[-2])/RC[-1]
//написать формулы
k:=len(aRes)
oSheet:Cells( Row1, 1+k+1):Value:="колич. измерений"
oSheet:Cells( Row1, 1+k+1):set('WrapText',.t.)
oSheet:Cells( Row1, 1+k+1):BorderAround( xlContinuous, xlThin)
oSheet:Cells( Row1, 1+k+1):Borders(xlEdgeBottom):Weight := xlMedium
oSheet:Cells( Row1, 1+k+2):Value:="среднее потребление"
oSheet:Cells( Row1, 1+k+2):set('WrapText',.t.)
oSheet:Cells( Row1, 1+k+2):BorderAround( xlContinuous, xlThin)
oSheet:Cells( Row1, 1+k+2):Borders(xlEdgeBottom):Weight := xlMedium
for i:=1 to 24 //часы суток
oSheet:Cells( Row1+i, 1+k+1):Formula:="=СЧЁТ(RC[-"+alltrim(str(k))+"]:RC[-1]"
oSheet:Cells( Row1+i, 1+k+2):Formula:="=ОКРУГЛ(СУММ(RC[-"+alltrim(str(k+1))+"]:RC[-2])/RC[-1];0)"
next
//сумма по часам
for i:=1 to 24 //часы суток
//msgbox(valtype(aSum[ i ]))
aSum[ i ]:=aSum[ i ]+oSheet:Cells( Row1+i, 1+k+2):Value
next

next

//лист суммы
oBook:Sheets:Add()
oSheet:=oBook:Activesheet
oSheet:name:="Итого"

oSheet:Cells( Row1, 1 ):Value:="час суток"
oSheet:Cells( Row1, 1 ):set('WrapText',.t.)
oSheet:Cells( Row1, 1 ):BorderAround( xlContinuous, xlThin)
oSheet:Cells( Row1, 1 ):Borders(xlEdgeBottom):Weight := xlMedium
oSheet:Cells( Row1, 1 ):Borders(xlEdgeRight):LineStyle := xlDouble
oSheet:Cells( Row1, 2):Value:="среднее без вычета"
oSheet:Cells( Row1, 2):set('WrapText',.t.)
oSheet:Cells( Row1, 2):BorderAround( xlContinuous, xlThin)
oSheet:Cells( Row1, 2):Borders(xlEdgeBottom):Weight := xlMedium
oSheet:Cells( Row1, 3):Value:="среднее с вычетом"
oSheet:Cells( Row1, 3):set('WrapText',.t.)
oSheet:Cells( Row1, 3):BorderAround( xlContinuous, xlThin)
oSheet:Cells( Row1, 3):Borders(xlEdgeBottom):Weight := xlMedium
n:=wMain.txt_Minus.Value //ежечасный вычет
for i:=1 to 24 //часы суток
oSheet:Cells( Row1+i, 1 ):Value:=i
//oSheet:Cells( Row1+i, 1 ):Borders(xlEdgeBottom):Weight := xlMedium
oSheet:Cells( Row1+i, 1 ):Borders(xlEdgeRight):LineStyle := xlDouble
oSheet:Cells( Row1+i, 2 ):Value:=aSum[ i ]
oSheet:Cells( Row1+i, 3 ):Value:=aSum[ i ]-n
next


//msgbox("конец")

oExcel:Visible := .T.




Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 28.09.11 12:20. Заголовок: Спасибо, за помощь....


Спасибо, за помощь....

С форматированием таблицы разобрался, на сегодня пойдет.
Фрагмент кода

oExcel :Visible := .F.
oExcel :Workbooks:Open(Main_File) // сводный отчет XLS из 9 листов
oKlSheet :=oExcel:Sheets:Count //
oSheet :=oBook:Worksheets(1)

oAs :=oExcel:ActiveSheet()
oExcel :Workbooks:Open(Dbf_file) // частный отчет (лист1), по которому проходит форматирование
oRange := oExcel:ActiveCell:SpecialCells(xlLastCell)
nLenRecnoXls := oRange:Row
nLenColumnXls := oRange:Column
cRecno := Val(AllTrim(Str(nLenRecnoXls)))
cColumn := Val(AllTrim(Str(nLenColumnXls)))
oExcel:Set( "DisplayAlerts",.F.)
oAs:= oExcel:ActiveSheet()
oAs:Columns(2):Font:Bold := .T.
For J_Rec = 4 To cColumn-4
oAs:Columns(J_Rec):NumberFormat:= "# ##0,00;-0,00;"
Next
oAs:Columns(7):NumberFormat:= "0,0000;;"

oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Borders(xlEdgeTop):LineStyle:= xlContinuous
oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Borders(xlEdgeBottom):LineStyle:= xlContinuous
oAs:Range(oAs:Cells(2,1),oAs:Cells(cRecno,cColumn-4)):Borders(xlEdgeRight):LineStyle:= xlContinuous
oAs:Range(oAs:Cells(2,1),oAs:Cells(cRecno,cColumn-4)):Borders(xlInsideVertical):LineStyle:= xlContinuous
oAs:Range(oAs:Cells(2,1),oAs:Cells(cRecno,cColumn-4)):Borders(xlInsideHorizontal):LineStyle:= xlContinuous
For I_Rec = 2 To cRecno
I_Rec1:=I_Rec-1
If I_Rec1/Rc_OilKol-Int(I_Rec1/Rc_OilKol)==0
I_Rec2:=(Int(I_Rec1/Rc_OilKol)-1)*(Rc_OilKol+1)+2
I_Rec3:=Int(I_Rec1/Rc_OilKol)*(Rc_OilKol+1)+1
I_Rec4:=I_Rec3-1
* If I_Rec3<cRecno
oAs:Rows(I_Rec3):Font:Bold:= .T.
oAs:Rows(I_Rec3):Interior:ColorIndex = 6
oAs:Rows(I_Rec3):WrapText = .T.
oAs:Range(oAs:Cells(I_Rec2,2),oAs:Cells(I_Rec4,2)):Merge()
oAs:Range(oAs:Cells(I_Rec2,2),oAs:Cells(I_Rec4,2)):HorizontalAlignment := xlCenter
oAs:Range(oAs:Cells(I_Rec2,2),oAs:Cells(I_Rec4,2)):VerticalAlignment:= xlCenter
* Endif
Endif
Next



oAs:Cells(2,2):Select()
oAs:SaveAs(Xls_File,Excel97_10)
oExcel:Set( "DisplayAlerts",.T.)
oExcel :Visible := .T.

Теперь надо:
1. перейти в Общий файл (Main_File) на Конкретный Лист
2. Скопировать диапазон из Open_Dbf
3. Вставить на Конкретный Лист Main_File


SADSTAR4: по коду oSheet:=oBook:Worksheets(1) вылетает ошибка

Error BASE/1004 Class: 'NIL' has no exported method: WORKSHEETS Arguments: ( [ |
|1] = Type: U [ 2] = Type: N Val: 1)

Что в коде не так?

PS.
Думаю переделать алгоритм формирования отчета....
1. Открыть сводный отчет (Main_File)
2. Перейти на Нужный Лист

3. Добавить в него данные из DBF
4. Сформатировать лист

Переход на другой лист

3. Добавить в него данные из DBF
4. Сформатировать лист
итд.
Запись отчета Main_File
Закрыть Excel.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 23
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 29.09.11 01:40. Заголовок: Oskar_AAA пишет: SA..


Oskar_AAA пишет:

 цитата:
SADSTAR4: по коду oSheet:=oBook:Worksheets(1) вылетает ошибка


Если это в четвертой строке - я не вижу создания ранее объекта oBook

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 7
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 05:30. Заголовок: SADSTAR4, да это 4 с..


SADSTAR4, да это 4 строка кода.
Но там открывается Сводный (конечный) отчет, в котром куча листов, шапки итд.
Мне нужно перейти на Лист N, допустим 1 или 3.

Далее по тексту кода в Excel Открывается полученный в результате обработки файл формата DBF, проходит его форматирование итд.
теперь скопировать текущий лист и далее вставить его в соответсвующий Лист Сводного отчета.

Т.е. не надо создавать (добавлять) листы в существующие файлы Excel....


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 24
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 29.09.11 06:22. Заголовок: Если объект oBook не..


Если объект oBook не существует, то обращение к нему вызывает ошибку
попробуй сделать так
oBook:=oExcel :Workbooks:Open(Main_File) // сводный отчет XLS из 9 листов
oKlSheet :=oExcel:Sheets:Count // <-это не объект а число
oSheet :=oBook:Worksheets(1)

P.S. Что-то не пойму смысла этого кода
cRecno := Val(AllTrim(Str(nLenRecnoXls)))
cColumn := Val(AllTrim(Str(nLenColumnXls)))
Числовое значение преобразовать в строку а затем опять в число?


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 8
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 07:29. Заголовок: попробовал "oShe..


попробовал
"oSheet :=oBook:Worksheets(1) "

oBook:=oExcel :Workbooks:Open(Main_File) // сводный отчет XLS из 9 листов
oKlSheet :=oExcel:Sheets:Count // количество листов книги - нормально
oSheet :=oBook:Worksheets(1)
Вылетает Ошибка

Error BASE/1004 Class: 'NIL' has no exported method: WORKSHEETS Arguments: ( [ |
1] = Type: U [ 2] = Type: N Val: 1)

PS.
cRecno := Val(AllTrim(Str(nLenRecnoXls)))
cColumn := Val(AllTrim(Str(nLenColumnXls)))
- у меня "глаз замылился...."

Остался только этот блок
1. "Выбрать данные из литса текущей книги"
2. "Перейти на другую книгу (сводный отчет)"
3. "Выбрать Нужный лист"
4. "Вставить данные из п.1"

фрагмент кода
oAs:SaveAs(Xls_Copy,Excel97_10) // запись файла DBF в формате XLS
oAs:Cells(2,2):Select() // переход на ячеку
oAs:Cells:Copy() // копирование
oExcel :Workbooks:Open(Main_File) // открытие сводного отчета
oKlSheet :=oExcel:Sheets:Count // подсчет количества листов
oSheet :=oBook:Worksheets(1) // выбор листа
oAs :=oExcel:ActiveSheet()
// надо установить на нужную ячйеку (A5)
oSheet:Paste() // вставить данные
oAs:SaveAs(Main_File,Excel97_10) // запись сводного отчета
oExcel:Set( "DisplayAlerts",.T.)
oExcel :Visible := .T.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2080
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.09.11 08:14. Заголовок: Oskar_AAA пишет: по..


Oskar_AAA пишет:

 цитата:
попробовал
"oSheet :=oBook:Worksheets(1) "



Откуда взялся worksheets ? В лучших домах Европы и Филадельфии используют Sheets

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 9
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 08:21. Заголовок: т.е. надо oSheet:=oB..


т.е. надо oSheet:=oBook:Sheets(1) - все равно ошибка
|Error BASE/1004 Class: 'NIL' has no exported method: SHETTS Arguments: ( [ 1] =|
| Type: U [ 2] = Type: N Val: 1)░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░|

Paha, подскажи как сделать.....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2081
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.09.11 08:28. Заголовок: Oskar_AAA пишет: Er..


Oskar_AAA пишет:

 цитата:
Error BASE/1004 Class: 'NIL' has no exported method: SHETTS Arguments: ( [ 1] =|



Просто очепятка. Надо Sheets

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 10
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 08:34. Заголовок: Pasha, точно опечатк..


Pasha, точно опечатка, исправил:
oAs:Cells(2,2):Select()
oExcel:Workbooks:Open(Main_File)
oSheet:=oBook:Sheets(1) ОШИБКА base/1004 - все равно есть????
oAs :=oExcel:ActiveSheet()
oAs:Cells(5,1):Select()
oAs:oSheet:Paste()


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2082
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.09.11 08:42. Заголовок: Oskar_AAA пишет: Pa..


Oskar_AAA пишет:

 цитата:
Pasha, точно опечатка, исправил:
oAs:Cells(2,2):Select()
oExcel:Workbooks:Open(Main_File)
oSheet:=oBook:Sheets(1) ОШИБКА base/1004 - все равно есть????
oAs :=oExcel:ActiveSheet()
oAs:Cells(5,1):Select()
oAs:oSheet:Paste()



Семен Семеныч !
А переменную oBook создать надо ?
oBook := oExcel:ActiveWorkBook


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 08:48. Заголовок: Pasha, в этом я вооб..


Pasha, в этом я вообще не понимаю,
спасибо за помощь....
oAs:SaveAs(Xls_Copy,Excel97_10)
oAs:Cells(2,2):Select()
oExcel:Workbooks:Open(Main_File)
oBook := oExcel:ActiveWorkBook
oSheet:=oBook:Sheets(1)
oAs :=oExcel:ActiveSheet()
oAs:Cells(5,1):Select()
oAs:oSheet:Paste()
oAs:SaveAs(Xls_File,Excel97_10)
oExcel:Set( "DisplayAlerts",.T.)
oExcel :Visible := .T.
Вот такой код...
сейчас ошибка на Paste()
понятно, что нет COPY()....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2083
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.09.11 09:13. Заголовок: Oskar_AAA пишет: по..


Oskar_AAA пишет:

 цитата:
понятно, что нет COPY()....



Дык надо сделать copy. То, что надо вставить - предварительно скопировать. Метод Copy применяется к объекту range


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 12
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 09:20. Заголовок: Pasha, oAs:Cells(2,2..


Pasha,
oAs:Cells(2,2):Select() переход на ячей
oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Copy() или как Правильно написать???
т.е надо с ячейки 2.2 до Crecno - количество строк, cColumn - количество столбцов выбрать в буфер



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2084
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.09.11 09:26. Заголовок: Oskar_AAA пишет: oA..


Oskar_AAA пишет:

 цитата:
oAs:Cells(2,2):Select() переход на ячей
oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Copy() или как Правильно написать???
т.е надо с ячейки 2.2 до Crecno - количество строк, cColumn - количество столбцов выбрать в буфер



Так правильно написано.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 13
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 09:33. Заголовок: ошибок нет oAs:Range..


ошибок нет
oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Select()
oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Copy()
далее переход на сводный отчет
oExcel:Workbooks:Open(Main_File)
oBook := oExcel:ActiveWorkBook
oSheet:=oBook:Sheets(1)
oAs :=oExcel:ActiveSheet()
oAs:Cells(5,1):Select()
oAs:oSheet:Paste() // ошибка
|Error Excel.Application:ACTIVESHEET/3 DISP_E_MEMBERNOTFOUND: OSHEET Arguments: |
|()░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░|
|░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░|
|Error at ...: TOLEAUTO:OSHEET(0) in Module: source\rtl\win32ole.prg░░░░░░░░░░░░░|
|Called from : EXPORT_DAY1(414) in Module: COMM_003.prg░░░░░░░░░░░░░░░░░░░░░░░░░░|
|Called from : EXPORT_DATA(383) in Module: MAIN_000.prg░░░░░░░░░░░░░░░░░░░░░░░░░░|
|Called from : MAIN(213) in Module: MAIN_000.prg░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░|
Pasha???






Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2085
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.09.11 09:47. Заголовок: Oskar_AAA пишет: oA..


Oskar_AAA пишет:

 цитата:
oAs:oSheet:Paste() // ошибка
|Error Excel.Application:ACTIVESHEET/3 DISP_E_MEMBERNOTFOUND: OSHEET Arguments: |



Зачем Sheet.Sheet, да ? Масло масляное.

Надо просто
oAs:Paste()

см.help к Excel vba
Или просто запись макросов с их последующим просмотром на предмет изучения.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 10:10. Заголовок: Pasha, спасибо.... с..


Pasha, спасибо.... с одним Листом справился.
Остается объем данных в буфере обмена и выделение вставленных ячеек, где-то на форуме были сообщения по этому поводу....

Теперь надо организовать переход на другие DBF отчеты, там обработка и вставка на соответсвующие листы...
в памяти уже загружен Excel файл сводный отчет.
Допустим переход на Лист 2,3,4.... N
Открытие следующего DBF файла - форматирование итд
вставка на листе сводного отчета.
///
///
в конеце - 1 раз запись Сводного Отчета



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2086
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.09.11 10:55. Заголовок: Oskar_AAA пишет: Те..


Oskar_AAA пишет:

 цитата:
Теперь надо организовать переход на другие DBF отчеты, там обработка и вставка на соответсвующие листы...
в памяти уже загружен Excel файл сводный отчет.
Допустим переход на Лист 2,3,4.... N
Открытие следующего DBF файла - форматирование итд
вставка на листе сводного отчета.
///
///
в конеце - 1 раз запись Сводного Отчета



Ну и.. в чем проблема ? В Sheets задать номер листа, выдать select на нужный дбф

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 15
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 29.09.11 13:25. Заголовок: Pasha, можно я вылож..


Pasha, можно я выложу исходники и задчау в личку?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 105 , стр: 1 2 3 4 5 6 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 145
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет