Суббота, 20.04.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Гостевая книга [ Добавить запись ]

Страницы: 1
Показано 1-11 из 11 сообщений
11. Свой   (03.01.2009 22:56)
0  
Здравствуйте, узнал о вас из форума sql.ru, попробовал однопользовательскую демоверсию. Программа работает, чувствуется что много сил приложено. Особое уважение вызывает применение русского языка.
Где о вас можно узнать еще кроме сайта народ.ру ?
Является ли ваш проект открытым для участия других разработчиков?
Ответ: Насколько я знаю, кроме как на этом сайте другой информации нет.
К разработке может присоединиться любой.
Причем, можно выбрать работу по совершенствованию и доработке инструмента (Delphi, Firebird) или разработку типовых проектов в этой среде (которых до сих пор нет).

10. БГ   (14.08.2008 16:08)
0  
Скачал Алькорд-Афину, но не могу запустить: требует имя - пароль.
Ответ: Если это сборка для работы в сети (сетевая версия), то скорее всего не запущен Firebird и/или socket server (файл scktsrvr.exe).

9.   (16.04.2008 17:01)
0  
Прочел об Алькорд-Афине немного и сразу хочется сказать: отличный продукт (если стабильно работает в реальных условиях :) ) Желаю автору дальнейших успехов.

8.   (12.11.2007 12:23)
0  
Спасибо за новую версию!

7. Дмитрий   (19.10.2007 11:18)
0  
В Firebird v.2.0.2 почти сразу после выхода найдены опасные баги, рекомендуют немедленно перейти на v.2.0.3.12981-1. Так что пересоберите задачи и обновите ссылку на FireBird c http://san-46.narod.ru/download.htm
Ответ: Спасибо за подсказку. Есть такая информация на ibase.ru - пропустил. Указанный релиз скачать не удалось, ссылу переделал на v.2.0.1, с которой сейчас работают множество проектов.
Задачу "пересобирать" необходимости нет.

6. МИФ   (23.02.2007 17:15)
0  
Добрый день! Хочу выразить свою благодарность, тем кто причастен к разработке Алькорд-Афина. Спасибо Вам!!! Первое моё знакомство (кстати, совершенно случайно) состоялось в начале ноября 2006 года. Я был очень рад такому знакомству. То что сказано на одной из страниц сайта - "Безвозмездно предлагается помощь по разработке конкретного проекта учета, начальная стадия которой, как правило, вызывает проблемы..", совершенно справедливо. "Испытал" на своей шкуре. Особую благодарность хочу ВЫРАЗИТЬ Сомову Александру, от которого получал и до сих пор получаю огромную помощь в разработке проектов.
Спасибо ВАМ.

5. Александр   (29.01.2007 16:32)
0  
Добрый день. Подскажите, как можно реализовать загрузку данных в справочник (пустой в момент загрузки) ?

Спасибо.

4. Александр   (25.01.2007 07:36)
0  
Добрый день.

Из excel перенесена функция "Число прописью". Автор оригинала точно неизвестен. Тестирование функции проводилось в ограниченных масштабах.
Ответ: В Афине есть встроенные функции, которые преобразовывают число в "число прописью".
Зачем изобретать "велосипед" и переносить похожие функции в библиотеку, дублируя заложенную функциональность?
Тем более, я что-то не встречал реализации похожих функций, работающих с падежами.
Попробуйте с помощью таких функций составить фразу:
"расплатился двадцатью пятью рублями и одной копейкой".
Функциями Афины это возможно.

3. Александр   (25.01.2007 03:28)
0  
Добрый день.

Из excel перенесена функция "Число прописью". Автор оригинала точно неизвестен. Тестирование функции проводилось в ограниченных масштабах.

Функция SumInWords(Число Arg, Kop; Строка Curr) : Строка

Переменные
Строка Result;
Число Whole;
Число Fraction;
Начало
Arg := Округлить (Arg, 2);
Result := "";

!Для отрицательных чисел
Если Arg < 0 То
Result := Result + "Минус ";
Иначе
Result := Result + "";
Конец
Arg := Абс(Arg);

!Целая часть числа

Whole := Целая(Arg);

Result := Result + ToQuadrillion(Whole);

!Добавление наименования валюты
Если Curr = "USD" То
Result := Result + Dollar(Whole);
Конец
Если Curr = "EUR" То
Result := Result + " евро";
Конец
Если Curr = "RUR" То
Result := Result + Rouble(Whole);
Конец
Если Curr = "BYR" То
Result := Result + Rouble(Whole);
Конец
!Вывод копеек

Fraction := (Arg - Whole) * 100;
Если Kop = 1 То
Result := Result + " " + ЧислоВСтроку(Fraction);
Конец
!
Если Kop = 2 То
Result := Result + " " + "0" + ЧислоВСтроку(Fraction);
Конец
Если Kop <> 1 и Kop <>2 То
Если Curr = "EUR" Или Curr = "USD" То !центы мужского рода
Result := Result + " " + ToThousand(Fraction, "True");
Иначе !копейки женского рода
Result := Result + " " + ToThousand(Fraction, "False");
Конец
Конец
!Добавление наименования копеек валюты
Если Curr = "USD" То
Result := Result + Cent(Fraction);
Конец
Если Curr = "EUR" То
Result := Result + Cent(Fraction);
Конец
Если Curr = "RUR" То
Result := Result + Kopeck(Fraction);
Конец
Если Curr = "BYR" То
Result := Result + Kopeck(Fraction);
Конец

!С заглавной буквы
Result := Преобразовать(ЧастьСтроки(Result, 1, 1), 2) + ЧастьСтроки(Result, 2, 100);
!Точка
Result := Result + ".";
ЗаменитьПодстроку (Result, " ", " ");
ЗаменитьПодстроку (Result, " ", " ");
ЗаменитьПодстроку (Result, " ", " ");
Выход Result;
Конец

!Функция возвращает слово "цент" в нужной форме в зависимости от окончания числа.
Функция Cent(Число Arg) : Строка
!Единицы (один последний знак)
Переменные
Число Unitys;
Число Tens;
Строка Cent;
Начало
Cent := "";
Unitys := Arg - Целая(Arg / 10) * 10;
!Десятки (два последних знака)

Tens := Arg - Целая(Arg / 100) * 100;
Если Tens > 10 И Tens < 20 То
Cent := " центов";
Иначе
Если Unitys = 1 То
Cent := " цент";
Конец
Если Unitys = 2 То
Cent := " цента";
Конец
Если Unitys = 3 То
Cent := " цента";
Конец
Если Unitys = 4 То
Cent := " цента";
Конец
Если Unitys = 5 То
Cent := " центов";
Конец
Если Unitys = 6 То
Cent := " центов";
Конец
Если Unitys = 7 То
Cent := " центов";
Конец
Если Unitys = 8 То
Cent := " центов";
Конец
Если Unitys = 9 То
Cent := " центов";
Конец
Конец
Выход Cent;
Конец

!Функция возвращает слово "копейка" в нужной форме в зависимости от окончания числа.
Функция Kopeck(Число Arg) : Строка
!Единицы (один последний знак)
Переменные
Число Unitys;
Число Tens;
Строка Kopeck;
Начало
Unitys := Arg - Целая(Arg / 10) * 10;
!Десятки (два последних знака)
Tens := Arg - Целая(Arg / 100) * 100;
Если Tens > 10 и Tens < 20 То
Kopeck := " копеек";
Иначе
Если Unitys = 1 То
Kopeck := " копейка";
Конец
Если Unitys = 2 То
Kopeck := " копейки" ;
Конец
Если Unitys = 3 То
Kopeck := " копейки";
Конец
Если Unitys = 4 То
Kopeck := " копейки";
Конец
Если Unitys = 5 То
Kopeck := " копеек";
Конец
Если Unitys = 6 То
Kopeck := " копеек";
Конец
Если Unitys = 7 То
Kopeck := " копеек";
Конец
Если Unitys = 8 То
Kopeck := " копеек";
Конец
Если Unitys = 9 Или Unitys = 0 То
Kopeck := " копеек";
Конец
Конец
Выход Kopeck;
Конец

!Функция возвращает слово "доллар" в нужной форме в зависимости от окончания числа.
Функция Dollar(Число Arg) : Строка
Переменные
!Единицы (один последний знак)
Число Unitys;
Число Tens;
Строка Dollar;
Начало
Dollar :="";
Unitys := Arg - Целая(Arg / 10) * 10;
!Десятки (два последних знака)
Tens := Arg - Целая(Arg / 100) * 100;
Если Tens > 10 и Tens < 20 То
Dollar := " долларов";
Иначе
Если Unitys = 1 То
Dollar := " доллар";
Конец
Если Unitys = 2 То
Dollar := " доллара";
Конец
Если Unitys = 3 То
Dollar := " доллара";
Конец
Если Unitys = 4 То
Dollar := " доллара";
Конец
Если Unitys = 5 То
Dollar := " долларов";
Конец
Если Unitys = 6 То
Dollar := " долларов";
Конец
Если Unitys = 7 То
Dollar := " долларов";
Конец
Если Unitys = 8 То
Dollar := " долларов";
Конец
Если Unitys = 9 Или Unitys = 0 То
Dollar := " долларов";
Конец
Конец
Выход Dollar;
Конец

!Функция возвращает слово "рубль" в нужной форме в зависимости от окончания числа.
Функция Rouble(Число Arg) : Строка
Переменные
!Единицы (один последний знак)
Число Unitys;
Число Tens;
Строка Rouble;
Начало
Unitys := Arg - Целая(Arg / 10) * 10;
!Десятки (два последних знака)

Tens := Arg - Целая(Arg / 100) * 100;
Если Tens > 10 и Tens < 20 То
Rouble := " рублей"
Иначе
Если Unitys = 1 То
Rouble := " рубль";
Конец
Если Unitys = 2 То
Rouble := " рубля";
Конец
Если Unitys = 3 То
Rouble := " рубля";
Конец
Если Unitys = 4 То
Rouble := " рубля";
Конец
Если Unitys = 5 То
Rouble := " рублей";
Конец
Если Unitys = 6 То
Rouble := " рублей";
Конец
Если Unitys = 7 То
Rouble := " рублей";
Конец
Если Unitys = 8 То
Rouble := " рублей";
Конец
Если Unitys = 9 Или Unitys = 0 То
Rouble := " рублей";
Конец
Конец
Выход Rouble;
Конец
!Функция возвращает число прописью.
!Аргумент - целое положительное число, меньшее квадриллиона.
Функция ToQuadrillion(Число Arg) : Строка
Переменные
Строка Result;
Число Trillions;
Число Unitys;
!Десятки (два последних знака)
Число Tens;
!Оставшаяся часть числа
Число Rest;

Начало
Arg := Абс(Целая(Arg));
Если Arg <= 0 или Arg > 999999999999999 ТО
Выход "ноль"
Конец

!Будущий результат (возврат) этой функции

Result := "";

!Триллионы в переданномм числе

Trillions := Целая(Arg / 1000000000000);
Если Trillions > 0 То
Result := ToTrillion(Trillions);
!Единицы
Unitys := Trillions - Целая(Trillions / 10) * 10;
Tens := Trillions - Целая(Trillions / 100) * 100;
Если Tens > 10 и Tens < 20 То
Result := Result + " триллионов ";
Иначе
Если Unitys = 1 То
Result := Result + " триллион ";
Конец
Если Unitys = 2 То
Result := Result + " триллиона ";
Конец
Если Unitys = 3 То
Result := Result + " триллиона ";
Конец
Если Unitys = 4 То
Result := Result + " триллиона ";
Конец
Если Unitys = 5 То
Result := Result + " триллионов ";
Конец
Если Unitys = 6 То
Result := Result + " триллионов ";
Конец
Если Unitys = 7 То
Result := Result + " триллионов ";
Конец
Если Unitys = 8 То
Result := Result + " триллионов ";
Конец
Если Unitys = 9 То
Result := Result + " триллионов ";
Конец
Конец
Конец
Rest := Arg - Trillions * 1000000000000;
Если Rest > 0 То
Result := Result + ToTrillion(Rest);
Конец

Выход Result;
Конец

!Функция возвращает число прописью.
!Аргумент - целое положительное число, меньшее триллиона.
Функция ToTrillion(Число Arg) : Строка
Переменные
Строка Result;
Число Milliards;
Число Unitys;
Число Tens;
Число Rest;
Начало
Arg := Абс(Целая(Arg));
Если (Arg < 0 или Arg = 0) или Arg > 999999999999 То
Выход "ноль"
Конец

!Будущий результат (возврат) этой функции

Result := "";

!Миллиарды в переданномм числе

Milliards := Целая(Arg / 1000000000);
Если Milliards > 0 То
Result := ToMilliard(Milliards);
!Единицы
Unitys := Milliards - Целая(Milliards / 10) * 10;
!Десятки (два последних знака)
Tens := Milliards - Целая(Milliards / 100) * 100;
Если Tens > 10 и Tens < 20 То
Result := Result + " миллиардов ";
Иначе
Если Unitys = 1 То
Result := Result + " миллиард ";
Конец
Если Unitys = 2 То
Result := Result + " миллиарда ";
Конец
Если Unitys = 3 То
Result := Result + " миллиарда ";
Конец
Если Unitys = 4 То
Result := Result + " миллиарда ";
Конец
Если Unitys = 5 То
Result := Result + " миллиардов ";
Конец
Если Unitys = 6 То
Result := Result + " миллиардов ";
Конец
Если Unitys = 7 То
Result := Result + " миллиардов ";
Конец
Если Unitys = 8 То
Result := Result + " миллиардов ";
Конец
Если Unitys = 9 То
Result := Result + " миллиардов ";
Конец
Конец
Конец
!Оставшаяся часть числа

Rest := Arg - Milliards * 1000000000;
Если Rest > 0 То
Result := Result + ToMilliard(Rest);
Конец
Выход Result;
Конец

!Функция возвращает число прописью.
!Аргумент - целое положительное число, меньшее миллиарда.
Функция ToMilliard(Число Arg) : Строка
Переменные
Строка Result;
Число Millions;
Число Unitys;
Число Tens;
Число Rest;
Начало
Arg := Абс(Arg);
Если (Arg <0 или Arg=0) или (Arg > 999999999) То
Выход "ноль";
Конец
!Будущий результат (возврат) этой функции

Result := "";
!Миллионы в переданномм числе
Millions := Целая(Arg / 1000000);
Если Millions > 0 То
Result := ToMillion(Millions);
!Единицы
Unitys := Millions - Целая(Millions / 10) * 10;
!Десятки (два последних знака)

Tens := Millions - Целая(Millions / 100) * 100;
Если Tens > 10 и Tens < 20 То
Result := Result + " миллионов ";
Иначе
Если Unitys = 1 То
Result := Result + " миллион ";
Конец
Если Unitys = 2 То
Result := Result + " миллиона ";
Конец
Если Unitys = 3 То
Result := Result + " миллиона ";
Конец
Если Unitys = 4 То
Result := Result + " миллиона ";
Конец
Если Unitys = 5 То
Result := Result + " миллионов ";
Конец
Если Unitys = 6 То
Result := Result + " миллионов ";
Конец
Если Unitys = 7 То
Result := Result + " миллионов ";
Конец
Если Unitys = 8 То
Result := Result + " миллионов ";
Конец
Если Unitys = 9 То
Result := Result + " миллионов ";
Конец
Конец
!Оставшаяся часть числа
Конец
Rest := Arg - Millions * 1000000;
Если Rest > 0 То
Result := Result + ToMillion(Rest);
Конец

Выход Result;
Конец

!Функция возвращает число прописью.
!Аргумент - целое положительное число, меньшее миллиона.
Функция ToMillion(Число Arg) : Строка
Переменные
Строка Result;
Число Millions;
Число Thousands;
Число Unitys;
Число Tens;
Число Rest;
Начало
Arg := Абс(Arg);
Если (Arg < 0 или Arg = 0) или Arg > 999999 То
Выход "ноль";
Конец
!Будущий результат (возврат) этой функции

Result := "";

!Тысячи в переданномм числе

Thousands := Целая(Arg / 1000);
Если Thousands > 0 То
Result := ToThousand(Thousands, ''False'');
!Единицы
Unitys := Thousands - Целая(Thousands / 10) * 10;
!Десятки (два последних знака)
Tens := Thousands - Целая(Thousands / 100) * 100;
Если (Tens > 10 или Tens = 10) и Tens < 20 То
Result := Result + " тысяч ";
Иначе
Если Unitys = 1 То
Result := Result + " тысяча ";
Конец
Если Unitys = 2 То
Result := Result + " тысячи ";
Конец
Если Unitys = 3 То
Result := Result + " тысячи ";
Конец
Если Unitys = 4 То
Result := Result + " тысячи ";
Конец
Если Unitys > 4 Или Unitys = 0 То
Result := Result + " тысяч ";
Конец
Конец
Конец
!Оставшаяся часть числа
Rest := Arg - Thousands * 1000;
Если Rest > 0 То
Result := Result + ToThousand(Rest, "True");
Конец
Выход Result;
Конец

!Функция возвращает число прописью.
!Первый аргумент - целое положительное число, меньшее тысячи.
!Второй аргумент - род числа (True - мужской, False - женский, для тысяч).
Функция ToThousand(Число Arg; Строка Gender) : Строка
Переменные
Строка Result, subResult;
Число Millions;
Число Thousands;
Число Hundreds;
Число Unitys;
Число Tens;
Число Rest;
Начало
Arg := Абс(Arg);
Если (Arg < 0 или Arg = 0) или Arg > 999 То
Выход "ноль";
Конец

!Будущий результат (возврат) этой функции
Result := "";
!Сотни в переданномм числе

Hundreds := Целая(Arg / 100) * 100;
Если Hundreds = 100 То
Result := "сто ";
Конец
Если Hundreds = 200 То
Result := "двести ";
Конец
Если Hundreds = 300 То
Result := "триста ";
Конец
Если Hundreds = 400 То
Result := "четыреста ";
Конец
Если Hundreds = 500 То
Result := "пятьсот ";
Конец
Если Hundreds = 600 То
Result := "шестьсот ";
Конец
Если Hundreds = 700 То
Result := "семьсот ";
Конец
Если Hundreds = 800 То
Result := "восемьсот ";
Конец
Если Hundreds = 900 То
Result := "девятьсот ";
Конец

!Оставшаяся часть числа (за вычетом сотен)
Rest := Arg - Hundreds;
Если Rest < 20 То
Если Rest =1 То
Если Gender = "True" То
Result := Result + "один";
Иначе
Result := Result + "одна";
Конец
Конец
Если Rest =2 То
Если Gender = "True" То
Result := Result + "два";
Иначе
Result := Result + "две";
Конец
Конец
Если Rest =3 То
Если Gender = "True" То
Result := Result + "три";
Иначе
Result := Result + "три";
Конец
Конец
Если Rest =3 То
Если Gender = "True" То
Result := Result + "три";
Иначе
Result := Result + "три";
Конец
Конец
Если Rest = 4 То
Если Gender = "True" То
Result := Result + "четыре";
Иначе
Result := Result + "четыре";
Конец
Конец
Если Rest = 5 То
Если Gender = "True" То
Result := Result + "пять";
Иначе
Result := Result + "пять";
Конец
Конец
Если Rest = 6 То
Если Gender = "True" То
Result := Result + "шесть";
Иначе
Result := Result + "шесть";
Конец
Конец
Если Rest = 7 То
Если Gender = "True" То
Result := Result + "семь";
Иначе
Result := Result + "семь";
Конец
Конец
Если Rest = 8 То
Result := Result + "восемь";
Конец
Если Rest = 9 То
Result := Result + "девять";
Конец
Если Rest = 10 То
Result := Result+"десять"; ! +
Конец
Если Rest = 11 То
Result := Result + "одиннадцать";
Конец
Если Rest = 12 То
Result := Result + "двенадцать";
Конец
Если Rest = 13 То
Если Gender = "True" То
Result := Result + "тринадцать";
Иначе
Result := Result + "тринадцать";
Конец
Конец
Если Rest = 14 То
Если Gender = "True" То
Result := Result + "четырнадцать";
Иначе
Result := Result + "четырнадцать";
Конец
Конец
Если Rest = 15 То
Если Gender = "True" То
Result := Result + "пятнадцать";
Иначе
Result := Result + "пятнадцать";
Конец
Конец
Если Rest = 16 То
Если Gender = "True" То
Result := Result + "шестнадцать";
Иначе
Result := Result + "шестнадцатьь";
Конец
Конец
Если Rest = 17 То
Если Gender = "True" То
Result := Result + "семнадцать";
Иначе
Result := Result + "семнадцать";
Конец
Конец
Если Rest = 18 То
Если Gender = "True" То
Result := Result + "восемнадцать";
Иначе
Result := Result + "восемнадцать";
Конец
Конец
Если Rest = 19 То
Если Gender = "True" То
Result := Result + "девятнадцать";
Иначе
Result := Result + "девятнадцать";
Конец
Конец
Выход Result;
Иначе
!Если оставшаяся часть числа (за вычетом сотен) = 20 и больше
!Десятки в переданном числе
Tens := Целая(Rest / 10) * 10;
Если Tens = 20 То
Result := Result + "двадцать ";
Конец
Если Tens = 30 То
Result := Result + "тридцать ";
Конец
Если Tens = 40 То
Result := Result + "сорок ";
Конец
Если Tens = 50 То
Result := Result + "пятьдесят ";
Конец
Если Tens = 60 То
Result := Result + "шестьдесят ";
Конец
Если Tens = 70 То
Result := Result + "семьдесят ";
Конец
Если Tens = 80 То
Result := Result + "восемьдесят ";
Конец
Если Tens = 90 То
Result := Result + "девяносто ";
Конец
!Единицы в переданном числе
Unitys := Rest - Tens;
Если Unitys = 1 То
Если Gender = "True" То
Result := Result + "один";
Иначе
Result := Result + "одна";
Конец
Конец
Если Unitys = 2 То
Если Gender = "True" То
Result := Result + "два";
Иначе
Result := Result + "две";
Конец
Конец
Если Unitys = 3 То
Если Gender = "True" То
Result := Result + "три";
Иначе
Result := Result + "три";
Конец
Конец
Если Unitys = 4 То
Если Gender = "True" То
Result := Result + "четыре";
Иначе
Result := Result + "четыре";
Конец
Конец
Если Unitys = 5 То
Если Gender = "True" То
Result := Result + "пять";
Иначе
Result := Result + "пять";
Конец
Конец
Если Unitys = 6 То
Если Gender = "True" То
Result := Result + "шесть";
Иначе
Result := Result + "шесть";
Конец
Конец
Если Unitys = 7 То
Если Gender = "True" То
Result := Result + "семь";
Иначе
Result := Result + "семь";
Конец
Конец
Если Unitys = 8 То
Если Gender = "True" То
Result := Result + "восемь";
Иначе
Result := Result + "восемь";
Конец
Конец
Если Unitys = 9 То
Если Gender = "True" То
Result := Result + "девять";
Иначе
Result := Result + "девять";
Конец
Конец
Конец
Выход Result;
Конец

2. Александр   (24.01.2007 00:44)
0  
Добрый день.
Подскажите, возможна ли программно в модуле объявить массив разрядности (x,y).

Спасибо.
Ответ: Нет, к сожалению, нельзя. Возможно объявлять только одномерные массивы.
Но можно воспользоваться таким приемом: в окне структуры объявить таблицу, в которой все колонки вычисляемые и использовать ее как двумерный массив. Обращение к ячейкам таблицы в программах допускается в нотации: Т(x,y), см. в справке "Типы данных">"Таблица".

1. Александр   (22.01.2007 12:00)
0  
Добрый день.

В первую очередь хочу поблагодарить за программу «Афина».

Вопрос к Вам как разработчику. В функционале программы «Журнал» открывает «Операцию». Подскажите. Если у меня в журнале есть 10-15 элементов, которые заполняются крайне редко. По этой причине хотелось бы их вынести на отдельную форму («операцию»), которую можно было вызывать из главной формы «Операция» по нажатию button на форме. Среди функций есть одна похожая – «ВызовФормы». Подходит ли она для этих целей?

Если нет, как это можно запрограммировать. Один из вариантов - вызывать отдельный справочник. Но мне кажется что это не совсем правильно.

С уважением, Марчук А.С.
Ответ: Проще всего бросить на форму "панель с закладками", где на первой расположить основные элементы, а на второй (как бы на другой форме) расположить элементы, которые заполняются крайне редко. Заголовок второй закладки будет использоваться пользователем как button для переключения с одной "формы" на вторую.

1-11

Имя *:
Email *:
WWW:
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2024
    Бесплатный хостинг uCoz