Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Исправить ошибку работы с кириллицой в mp3tagger - jar архив

Ответить
Настройки темы
Java - Исправить ошибку работы с кириллицой в mp3tagger - jar архив

Пользователь


Сообщения: 86
Благодарности: 5

Профиль | Отправить PM | Цитировать


mp3tagger я использую для экспорта а затем импорта тэга mp3.
Моя задача (почти решена, есть один момент который очень мешает): существующие mp3 файлы с тагами разложенные по папкам экспортнуть tag в текстовый файл, отконвертировать mp3 в wav, затем отконвертировать с помощью lame обратно в mp3 но с переменным битрейдом и заданным качеством, импортировать обратно mp3 tag - для реализации написаны батники.
Почему был выбран именно Mp3Tagger: возможность работы с коммандной строки, экспорт/импорт тэга в файл/из файла, настройки можно задать 1 раз через gui, а потом использовать конфиг. Использовать имя файла для промежуточного хранения тага - не катит по причине полноты информации.
Этот jar архив умеющий работать с коммандной строкой взят отсюда: http://ostermiller.org/mp3tagger/
Проблема в том что импорт русского текста проходит отлично (если в tag файле прописать под виндой в cp1251 строки - всё импортнётся нормально), а вот экспорт кириллицы кривой - вместо всех символов кириллицы в результирующем mp3 получаем "э" а в экспортированном .tag файле "\uFFFD"
Лажа в mp3tagger.jar\com\Ostermiller\Mp3Tagger\Lyric3\Mp3Tags.java в функции getID3() начало - строка 1202

вопросы:
1.меня интересуют значения констант - возможные варианты вместо "ASCII", при вызове String()
2.пробовал ничего не меняя откомпилировать с помощью jdk-1_5_0_02-windows-i586-p.exe - не собирается, вылазит куча ошибок "cannot find symbol"
компилировал так: javac.exe mp3tags.java
Как правильно скомпилить?
3.как пользоваться дебаггером jdb.exe - есть где-нибудь человеческая инструкция(пошаговое руководство) с примерами?

Код: Выделить весь код
    private boolean getID3() throws UnsupportedEncodingException, IOException{
        long fileLength;
        byte[] b;
        String s;
        int gen;
        fileLength = rafMp3.length();
        // regular ID3 tag
        rafMp3.seek(fileLength - 128); //128 bytes at the end of the file
        b = new byte[128];
        rafMp3.read(b); // read those 128 bytes
        s = new String(b,0,3,"ASCII");
        if (s.compareTo("TAG") == 0){ // if there is a ID3 tag it starts with this
            //the fields are at the regions specified here
            if ((s = (new String(b,3,30,"ASCII")).trim()).length() > 0)
                trackName.setHeadline(s);
            if ((s = (new String(b,33,30,"ASCII")).trim()).length() > 0)
                artistName.setHeadline(s);
            if ((s = (new String(b,63,30,"ASCII")).trim()).length() > 0)
                albumName.setHeadline(s);
            if ((s = (new String(b,93,4,"ASCII")).trim()).length() > 0)
                year = s;
            if (b[125] == 0){
                if ((s = (new String(b,97,28,"ASCII")).trim()).length() > 0)
                    comment = s;
                if ((s = ("" + (0xff & b[126])).trim()).length() > 0)
                    trackNumber = s;
            } else {
                if ((s = (new String(b,97,30,"ASCII")).trim()).length() > 0)
                    comment = s;
            }
			// the 0xff masks the last part of the byte and treats it like an
			// unsigned byte.
            if ((gen = 0xff & b[127]) != GENRE_NONE) // genre is not stored as ASCII!
                genre = gen;
            return (true); // found a tag
        } else {
            return (false); // didn't find a tag
        }
	}

Отправлено: 18:21, 04-06-2008

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


в большинстве случаев - бессмысленная работа по значительному ухудшения качества музыки при незначительной экономии объёмапо хорошему надо записывать теги в ID3v2, он юникодный. cp1251 в id3 вообще никак не регламентирована.

Отправлено: 22:55, 04-06-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 86
Благодарности: 5

Профиль | Отправить PM | Цитировать


У кого mp3плеер на флешевый на 8гиг а то и дисковый на 40-80 тому конечно проблема не актуальна, а в 512-гиг очень даже помогает. По месту выигрывается ~20-30% при исходных 192-320kbps. Это не только сокоащает место на диске но и ускоряет бэкап например. На слух на большинстве треков я не слышу никакой разницы между 160kbps и больше, за редким исключением где 192 таки отличаются. Более 192 вообще не слышу разницу нигде. Перекодированные в vbr с мин=32kbps, макс=320 и quality=2 на слух ни один трек не отличаю от оригинала даже на hi-fi акустике.
Давайте не разводить здесь дискуссию о целесообразности этих действий - ошибка явно в java приложении. Его разработчик просто не предусмотрел использование символов выше 128го в тагах. Mp3Tagv2 он вообще не поддерживает.
Вопросы из первого поста попрежнему актуальны.

Отправлено: 10:45, 05-06-2008 | #3


Пользователь


Сообщения: 86
Благодарности: 5

Профиль | Отправить PM | Цитировать


При компиляции пишет вот что:
Код: Выделить весь код
C:\Appl\jdk\bin>javac mp3tags.java
mp3tags.java:37: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Headline trackName;
            ^
mp3tags.java:38: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Headline artistName;
            ^
mp3tags.java:39: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Headline albumName;
            ^
mp3tags.java:43: cannot find symbol
symbol  : class Lyric
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Lyric lyrics;
            ^
mp3tags.java:86: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public Mp3Tags(String filename) throws StringTooLongException, IOException,
CorruptTagException, UnsupportedEncodingException{
                                           ^
mp3tags.java:86: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public Mp3Tags(String filename) throws StringTooLongException, IOException,
CorruptTagException, UnsupportedEncodingException{

^
mp3tags.java:500: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public void newMp3(String filename) throws IOException, CorruptTagException,
 UnsupportedEncodingException{
                                                            ^
mp3tags.java:631: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public void readTagsFromMp3()throws IOException, UnsupportedEncodingExceptio
n, CorruptTagException{

   ^
mp3tags.java:891: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public void writeTagsToMp3() throws IOException, StringTooLongException{
                                                     ^
mp3tags.java:1251: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private boolean getLyrics3() throws UnsupportedEncodingException, IOExceptio
n, CorruptTagException{

   ^
mp3tags.java:62: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        trackName = new Headline();
                        ^
mp3tags.java:63: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        artistName = new Headline();
                         ^
mp3tags.java:64: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        albumName = new Headline();
                        ^
mp3tags.java:65: cannot find symbol
symbol  : class Lyric
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        lyrics = new Lyric();
                     ^
mp3tags.java:897: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Lyrics too long");
                          ^
mp3tags.java:900: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Information too long");
                          ^
mp3tags.java:903: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Image too long");
                          ^
mp3tags.java:906: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Artist name too long");
                          ^
mp3tags.java:909: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Album length too long");
                          ^
mp3tags.java:912: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Author length too long");
                          ^
mp3tags.java:915: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Track name too long");
                          ^
mp3tags.java:943: operator + cannot be applied to int,Lyric.length
                    length += 18 + lyrics.length();
                              ^
mp3tags.java:943: inconvertible types
found   : <nulltype>
required: int
                    length += 18 + lyrics.length();
                                 ^
mp3tags.java:967: operator + cannot be applied to int,Headline.length
                    length += 8 + trackName.length();
                              ^
mp3tags.java:967: inconvertible types
found   : <nulltype>
required: int
                    length += 8 + trackName.length();
                                ^
mp3tags.java:973: operator + cannot be applied to int,Headline.length
                    length += 8 + artistName.length();
                              ^
mp3tags.java:973: inconvertible types
found   : <nulltype>
required: int
                    length += 8 + artistName.length();
                                ^
mp3tags.java:979: operator + cannot be applied to int,Headline.length
                    length += 8 + albumName.length();
                              ^
mp3tags.java:979: inconvertible types
found   : <nulltype>
required: int
                    length += 8 + albumName.length();
                                ^
mp3tags.java:1271: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new CorruptTagException("Could not find LYRICSBEGIN delimi
ter");
                          ^
mp3tags.java:1289: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                    throw new CorruptTagException("Could not find LYRICSBEGIN de
limiter");
                              ^
mp3tags.java:1297: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                        throw new CorruptTagException("Size of a field could not
 be determined");
                                  ^
mp3tags.java:1301: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                        throw new CorruptTagException("Size of a field larger th
an space available");
                                  ^
mp3tags.java:1348: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new CorruptTagException("Size of Lyrics3 tag could not be
determined");
                          ^
Note: mp3tags.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: mp3tags.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
34 errors
При компиляции с -Xlint ничего не проясняется - тот же дуратский "cannot find symbol":
Код: Выделить весь код
C:\Appl\jdk\bin>javac -Xlint mp3tags.java
mp3tags.java:37: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Headline trackName;
            ^
mp3tags.java:38: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Headline artistName;
            ^
mp3tags.java:39: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Headline albumName;
            ^
mp3tags.java:43: cannot find symbol
symbol  : class Lyric
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private Lyric lyrics;
            ^
mp3tags.java:86: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public Mp3Tags(String filename) throws StringTooLongException, IOException,
CorruptTagException, UnsupportedEncodingException{
                                           ^
mp3tags.java:86: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public Mp3Tags(String filename) throws StringTooLongException, IOException,
CorruptTagException, UnsupportedEncodingException{

^
mp3tags.java:500: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public void newMp3(String filename) throws IOException, CorruptTagException,
 UnsupportedEncodingException{
                                                            ^
mp3tags.java:631: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public void readTagsFromMp3()throws IOException, UnsupportedEncodingExceptio
n, CorruptTagException{

   ^
mp3tags.java:891: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    public void writeTagsToMp3() throws IOException, StringTooLongException{
                                                     ^
mp3tags.java:1251: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
    private boolean getLyrics3() throws UnsupportedEncodingException, IOExceptio
n, CorruptTagException{

   ^
mp3tags.java:62: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        trackName = new Headline();
                        ^
mp3tags.java:63: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        artistName = new Headline();
                         ^
mp3tags.java:64: cannot find symbol
symbol  : class Headline
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        albumName = new Headline();
                        ^
mp3tags.java:65: cannot find symbol
symbol  : class Lyric
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
        lyrics = new Lyric();
                     ^
mp3tags.java:706: warning: [unchecked] unchecked call to addElement(E) as a memb
er of the raw type java.util.Vector
            dirOptions.addElement(optionsToks.nextToken());
                                 ^
mp3tags.java:722: warning: [deprecation] decode(java.lang.String) in java.net.UR
LDecoder has been deprecated
                    workingName = URLDecoder.decode(workingName);
                                            ^
mp3tags.java:742: warning: [unchecked] unchecked call to addElement(E) as a memb
er of the raw type java.util.Vector
                        fieldList.addElement(t.text);
                                            ^
mp3tags.java:897: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Lyrics too long");
                          ^
mp3tags.java:900: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Information too long");
                          ^
mp3tags.java:903: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Image too long");
                          ^
mp3tags.java:906: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Artist name too long");
                          ^
mp3tags.java:909: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Album length too long");
                          ^
mp3tags.java:912: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Author length too long");
                          ^
mp3tags.java:915: cannot find symbol
symbol  : class StringTooLongException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new StringTooLongException("Track name too long");
                          ^
mp3tags.java:943: operator + cannot be applied to int,Lyric.length
                    length += 18 + lyrics.length();
                              ^
mp3tags.java:943: inconvertible types
found   : <nulltype>
required: int
                    length += 18 + lyrics.length();
                                 ^
mp3tags.java:967: operator + cannot be applied to int,Headline.length
                    length += 8 + trackName.length();
                              ^
mp3tags.java:967: inconvertible types
found   : <nulltype>
required: int
                    length += 8 + trackName.length();
                                ^
mp3tags.java:973: operator + cannot be applied to int,Headline.length
                    length += 8 + artistName.length();
                              ^
mp3tags.java:973: inconvertible types
found   : <nulltype>
required: int
                    length += 8 + artistName.length();
                                ^
mp3tags.java:979: operator + cannot be applied to int,Headline.length
                    length += 8 + albumName.length();
                              ^
mp3tags.java:979: inconvertible types
found   : <nulltype>
required: int
                    length += 8 + albumName.length();
                                ^
mp3tags.java:1135: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                            v.addElement(new OptionToken(OptionToken.FIELD, fiel
d));
                                        ^
mp3tags.java:1142: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                            v.addElement(new OptionToken(OptionToken.DELIM, deli
m));
                                        ^
mp3tags.java:1149: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                            v.addElement(new OptionToken(OptionToken.DELIM, deli
m));
                                        ^
mp3tags.java:1153: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                            v.addElement(new OptionToken(OptionToken.FIELD, fiel
d));
                                        ^
mp3tags.java:1156: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                        v.addElement(new OptionToken(OptionToken.FIELD, "t"));
                                    ^
mp3tags.java:1162: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                            v.addElement(new OptionToken(OptionToken.DELIM, deli
m));
                                        ^
mp3tags.java:1167: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                            v.addElement(new OptionToken(OptionToken.FIELD, fiel
d));
                                        ^
mp3tags.java:1170: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                        v.addElement(new OptionToken(OptionToken.FIELD, "t"));
                                    ^
mp3tags.java:1177: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
                    v.addElement(new OptionToken(OptionToken.FIELD, field));
                                ^
mp3tags.java:1184: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
            v.addElement(new OptionToken(OptionToken.DELIM, delim));
                        ^
mp3tags.java:1188: warning: [unchecked] unchecked call to addElement(E) as a mem
ber of the raw type java.util.Vector
            v.addElement(new OptionToken(OptionToken.FIELD, field));
                        ^
mp3tags.java:1271: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new CorruptTagException("Could not find LYRICSBEGIN delimi
ter");
                          ^
mp3tags.java:1289: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                    throw new CorruptTagException("Could not find LYRICSBEGIN de
limiter");
                              ^
mp3tags.java:1297: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                        throw new CorruptTagException("Size of a field could not
 be determined");
                                  ^
mp3tags.java:1301: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                        throw new CorruptTagException("Size of a field larger th
an space available");
                                  ^
mp3tags.java:1348: cannot find symbol
symbol  : class CorruptTagException
location: class com.Ostermiller.Mp3Tagger.Lyric3.Mp3Tags
                throw new CorruptTagException("Size of Lyrics3 tag could not be
determined");
                          ^
34 errors
14 warnings
Мне не ясна ошибка "cannot find symbol" - это даже не syntax error - что неверно вообще не ясно. Может есть ключик позволяющий подробнее указать ошибку?

Отправлено: 11:26, 05-06-2008 | #4


Пользователь


Сообщения: 86
Благодарности: 5

Профиль | Отправить PM | Цитировать


уже понял что если класс находиться в другом файле надо компилировать только все файлы вместе, а наличие скомпиленых включённых классов в той же папке и исходников никак не помогает.

вот так собирается:
Код: Выделить весь код
javac CorruptTagException.java Headline.java Lyric.java LyricLine.java LyricTime.java Mp3Tags.java StringTooLongException.java
с толку сбил компилятор - никогда раньше с ним дело не имел - не могли ошибку обозвать "cannot find class" или ещё как-нибудь чтобы было ясно что он не может найти.

Осталось найти возможные варианты замены константы "ASCII" - подскажите какие есть другие значения или как правильно гуглить чтобы найти список констант.

Отправлено: 12:43, 06-06-2008 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Исправить ошибку работы с кириллицой в mp3tagger - jar архив

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MySQL - [решено] Помогите исправить ошибку... Neo+test Программирование и базы данных 7 27-07-2008 15:31
Прочие БД - как исправить ошибку? Tosha_l Программирование и базы данных 1 06-01-2008 19:12
как исправить ошибку? Millenium Microsoft Windows 2000/XP 6 28-12-2005 11:22
Помогите исправить ошибку! Guest Хочу все знать 1 15-05-2004 16:55
Помогите исправить ошибку! Guest Сетевые технологии 1 12-05-2004 10:11




 
Переход