Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Записывание русского текста в файл, Put #1, , "Привет, Vingrad'овцы!" 
:(
    Опции темы
Akina
Дата 2.9.2004, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



cardinal

Где-то так:

Код
public xlat866to1251 as String*256
public xlat1251to866 as String*256

sub Main
open "866-1251.bin" as #1
open "1251-866.bin" as #2
xlat866to1251 = input$(#1,256)
xlat1251to866 = input$(#2,256)
close

end sub


и потом

Код
sub 866to1251(tempStr)
for i=1 to len(tempStr)
  mid$(tempStr,i,1) = mid$(xlat866to1251, asc(mid$(tempStr,i,1)), 1)
next i
end Sub

sub 1251to866(tempStr)
for i=1 to len(tempStr)
  mid$(tempStr,i,1) = mid$(xlat1251to866, asc(mid$(tempStr,i,1)), 1)
next i
end Sub



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Эд
Дата 2.9.2004, 10:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(cardinal)
Эд, то что ты написал это интересно (особенно перекодировка DOS - WIN).

Есть еще перекодировщик Word97(unicode) --> .txt
Исходник в 46 строчек, правда, для TB smile.gif. Прислать?

Цитата(cardinal)
  Преимущества таблицы заключаются наверное все таки в более быстром решении задачи

Да; массив - это наибыстрейший, доступный в Бейсике, вариант. Но только в том случае, если таблица глобальная, то есть, создается один раз при старте программы. Если же она раскладывается заново каждый раз при вызове подпрограммы, то время раскладки 255 значений несравненно больше десятка сравнений по Case, так что при перекодировке коротких строк выигрыш может сойти на нет.

Цитата(Akina)
еще более разумно держать в виде файлов набор XLAT-таблиц

Как я понял из объяснения (Akina 2.9.2004, 08:41), XLAT-таблица это таблица в форме строки. Выглядит изящнее, но доступ к строковым переменным медленнее, чем к числовым, так как строка представляет собой, внутренне, тот же массив, только с дополнительными наворотами.

  Вверх
cardinal
Дата 2.9.2004, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Вообще мне кажется, что
Код
Put #FileNumber, Position, CodeTab(Asc(Left(Text, 1)))
Text = Right(Text, Len(Text) - 1)

более быстро чем
Код
Put #FileNumber, i, CodeTab(Asc(Mid(Text, i, 1)))

и чем
Код
mid$(tempStr,i,1) = mid$(xlat1251to866, asc(mid$(tempStr,i,1)), 1)

Цитата
Да; массив - это наибыстрейший, доступный в Бейсике, вариант.

Интересно, а я торможу сильно или в VB нельзя объявить глобальный массив и присвоить ему значения на этапе компиляции, то есть не
Цитата
Если же она раскладывается заново каждый раз при вызове подпрограммы, то время раскладки 255 значений несравненно больше десятка сравнений по Case, так что при перекодировке коротких строк выигрыш может сойти на нет.



Akina, я если честно никаких премуществ больших не увидел, кроме компактности. Если бы из файла заполнять глобальный массив, то да, а так мне не очень понравилось smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Akina
Дата 2.9.2004, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



cardinal
Цитата
никаких премуществ больших не увидел, кроме компактности

на самом деле приведенный код - просто пояснение к алгоритму. Реально это делается на АСМе (можно вместе с таблицами) и инлайнится или линкуется к ЕХЕ. Там XLAT - весьма быстро выполняется...

Это сообщение отредактировал(а) Akina - 2.9.2004, 11:15


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 3.9.2004, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Akina, я понял... smile.gif

Я ни фига не успел написать в FAQ, но надеюсь после отпуска найду время...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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