Список форумов www.shedevr.org.ru www.shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

VB, и последующие вопросы по исходникам ПП
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов www.shedevr.org.ru -> Утилита PokePerevod
Предыдущая тема :: Следующая тема  
Автор Сообщение
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Чт Июн 29, 2006 2:45 pm    Заголовок сообщения: VB, и последующие вопросы по исходникам ПП Ответить с цитатой

В общем, утром скачал исходники первого ПП. Откопал у себя на винте "пыльный" дистриб MS VB 6.0. Установил, загрузил исходники, посмотрел и подумал: "Наконец-то у меня будет фильтр "Все поддерживаемые форматы (включающий в себя *.nes, *.smd и т.п.", и вообще настрою ПП под себя!" Особо извращённых процедур я не заметил, но посидев ещё немного, я понял, что программисты, пишущие на VB, явно имеют задатки мазохистов (без обид Smile ). Скроллер, и тот у меня не работает. Да и синтаксис языка мне не совсем понятен.
Ну и решил я попробовать переписать ПП под Делфи (я сказал ПОПРОБОВАТЬ!). Заодно и Делфи подучу, да и в Бэйсике чуток разберусь. Функций у него возможно будет поменьше (половиной я ни разу не пользовался), но уж под себя я его точно заточу Smile. Распростронять его, или нарушать авторские права я не собираюсь.
Единственная загвоздка - это синтаксис VB. Чуть позже, я естественно, почитаю доки, но на счёт некоторых вещей я хочу спросить сейчас, да и спрашивать потом, именно здесь.

1. Что означает запись "Dim x As Long"? Я так полагаю, что данная запись эквиваалента Делфевской "x: LongString", то есть обьявление локальной переменной 'x', типа "Длинная строка", я прав?
2. Что такое "LOF" (как я понимаю Length Of File) и с чем его едят?
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)


Последний раз редактировалось: &ryu (Чт Июн 29, 2006 4:43 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Чт Июн 29, 2006 3:00 pm    Заголовок сообщения: Re: VB, и последующие вопросы по исходникам ПП Ответить с цитатой

&ryu писал(а):
Что означает запись "Dim x As Long"

это означает Объявить пременную с именем x и типом Long

тип Long эквивалентен int32, в общем это ЧИСЛО...
Код:
Long (long integer) variables are stored as signed 32-bit (4-byte) numbers ranging in value from -2,147,483,648 to 2,147,483,647


предвидя еще вопросы на эту-же тему -
dim s as string - переменная типа char не определенной заранее длинны :)


&ryu писал(а):
Что такое "LOF" (как я понимаю Length Of File) и с чем его едят?

да, функция LOF(номер_открытого_файла) возвращает длинну файла в байтах...

[edit]
и про какой такой скроллер ты говоришь ? :)

[edit2]
&ryu писал(а):
Распростронять его, или нарушать авторские права я не собираюсь.

какие глупости!, какие авторские права, расслабься... Very Happy
я же вроде писал где-то, что единственное, что мне
нужно - это если будут внесены исправления (улучшения!),
то я бы хотел об этом знать... (может они и мне пригодятся Wink )
_________________
Всех их вместе переведём!


Последний раз редактировалось: Axel (Чт Июн 29, 2006 5:10 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Чт Июн 29, 2006 4:51 pm    Заголовок сообщения: Ответить с цитатой

Про VB:
Ясно, надо искать сравнительную таблицу типов...

Про Скрол:
У меня листинг скролом не скролится! Ужась! :)

Про авторские права:
Сомневаюсь, что я буду вносить изменения, впрочем - кто знает?

Про "Попробовать":
Спасибо! Это, видать, "вино" на меня так действовало Smile
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Чт Июн 29, 2006 5:12 pm    Заголовок сообщения: Ответить с цитатой

&ryu писал(а):
Про Скрол:
У меня листинг скролом не скролится! Ужась! Smile

если это тот, что в генераторе таблиц ?
так, там его и нет... Smile
ПП перекодирует несколько килобайт начиная с указанного смещения и всё...
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Чт Июн 29, 2006 6:11 pm    Заголовок сообщения: Ответить с цитатой

Да нет Smile Я имел ввиду MS VB 6.0 и Листинг программы. У окошка с листингом есть скролбар, но скролом(на мышке) он не скроллится...
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Чт Июн 29, 2006 6:25 pm    Заголовок сообщения: Ответить с цитатой

&ryu писал(а):
У окошка с листингом есть скролбар, но скролом(на мышке) он не скроллится...

это нормально, он ни у кого не работает...
(хочется скроооолить, ставь .NET Smile )
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Пт Июн 30, 2006 9:37 am    Заголовок сообщения: Ответить с цитатой

Итак, с загрузкой ROM'a я разобрался.
Но вот с таблой...
Цитата:
Dim s As String
Dim x As Long
Dim charposition As String
Dim i As Long
TableComments = ""
ReDim myTransTable(0 To 255) As String 'почистим таблицу перед загрузкой
Open TableFileName For Input As 1
While Not EOF(1)
Line Input #1, s
x = InStr(s, "=")
If x > 0 Then
If Len(Mid(s, x + 1)) > 1 Then
Call DoLog("Предупреждение: Код " & Mid(s, 1, x - 1) & " соответствует нескольким символам") 'запишем в лог
End If
charposition = "&h" + Mid(s, 1, x - 1)
charposition = Val(charposition)
If myTransTable(charposition) <> "" Then
Call DoLog("Предупреждение: Код " & Mid(s, 1, x - 1) & " определен более чем один раз") 'запишем в лог
End If
myTransTable(charposition) = Mid(Mid(s, x + 1), 1, 1) ' берем ТОЛЬКО один первый символ
Else 'если мы не нашли символ "=", то считаем эту строку коментарием
' If ExtendedLogs = "YES" Then 'лучше пусть всегда показывает
TableComments = TableComments + s + vbCrLf
DoLog "Комментарий: " & s
' End If
End If
Wend
Close
For i = 0 To 255 'строка должна быть позиционируема
If myTransTable(i) = "" Then
myTransTable(i) = Chr(0)
End If
Next
myTransTableString = Join(myTransTable, "")
Call DoLog("Загрузили таблицу :" & TableFileName) 'запишем в лог
TableLoaded = True
End If
Exit Sub ' тут работа подпрограммы заканчивается


- Что значит ReDim myTransTable(0 To 255) As String? Если Dim это обьявление переменной, то что тогда ReDim? Переобьявление? На кой?

- EOF(1) - а это что?

- x = InStr(s, "=") InStr - это что куда?

Аксель, ты не знаешь какого-нибудь электронного справочника для начинающих, с описанием простейших функций? Всмысле, где качнуть? Гугл не предлагать! Smile[/list]
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Пт Июн 30, 2006 9:58 am    Заголовок сообщения: Ответить с цитатой

Скачал небольшой справочник по функциям (гугл рулит, как всегда Smile )
Вопросы по EOF и inStr считать недействительными.
А вот про ReDim остался...
И ещё: Может посоветуешь какой-нибудь хороший учебник? Названия и автора будет достаточно, скорей всего... Smile
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Пт Июн 30, 2006 10:19 am    Заголовок сообщения: Ответить с цитатой

&ryu писал(а):
Итак, с загрузкой ROM'a я разобрался.
Но вот с таблой...

- Что значит ReDim myTransTable(0 To 255) As String? Если Dim это обьявление переменной, то что тогда ReDim? Переобьявление? На кой?

- EOF(1) - а это что?

- x = InStr(s, "=") InStr - это что куда?

Аксель, ты не знаешь какого-нибудь электронного справочника для начинающих, с описанием простейших функций? В смысле, где качнуть?

Начну с конца, видимо у тебя не установлен MSDN и потому родной VB'шный help не работает, так ?
тогда ты можешь нетрадиционно воспользоваться MS Office'ом Smile
excel -->macros -->VB Editor ... Insert --> Module
а там пишешь нужный оператор ставишь на него курсор и жмёшь F1 Wink
(причем если это Office русский, то вероятно и хелп будет русский, хотя точно не скажу, проверить не на чем Wink , в смысле у меня везде английский)

Так, теперь ReDim - эта конструкция позволяет переопределить размерность массива (о чем можно догадаться из названия)...
т.е. я должен в начале проги написать примерно так:
ReDim myTransTable() as string '! НЕ указывая ничего в размерности

зато потом я могу сколько угодно раз делать переопределение
ReDim myTransTable(0 To 255) 'НО уже указывая размерность


EOF(номер_открытого файла) - End Of File - функция возвращает True
если мы файл дочитали до конца...
While not EOF(1) 'пока не конец файла begin... Wink
Line Input #1, s 'читаем из файла строку до следующего CrLf (0x0D0A)
x = InStr(s, "=") 'ищем есть ли в этой строке символ "="

функция Instr - возвращает позицию искомой строкИ в искомой строкЕ Smile (где,что)... если не нашла, то будет НОЛЬ!
вся работа со строками в VB идет с ЕДИНИЦЫ...

эти "с нуля" и "с единицы" - самый большой и пожалуй, единственный
гимор в бэйсике, потому как часть функций (заимствованных у Си)
считают всё с нуля...

в общем, самое простое - это контекстный help, поставил курсор на оператор и жмёшь F1...


[edit]
*какой ты быстрый*

учебников не знаю... (чукча не читатель, чукча писатель... Smile )

ReDim я использовал потому, что я тогда не знал сколько я *потом*
захочу иметь элементов в таблице перекодировки, но
после использовал такой алгоритм перекодировки (SBCS charset),
что больше чем 0-255 всё равно не получится использовать...

...переделка работы с таблицами была одной из причин появления ПП2...


[edit2]
алгоритм подготовки таблицы, кстати следующий... (судя по приведенному куску кода Wink... блин, два года прошло...)

есть массив myTransTable() в каждый его элемент я присваиваю символ (то, что ПОСЛЕ знака "равно" в таблице), а в КАКОЙ его
(массива) элемент присвоить говорит то, что написано ДО знака равно в таблице перекодировки (hex код)

далее я неприсвоенным элементам массива присваиваю chr(0)
это символ такой Smile с кодом 0x00

и всё, таблица загружена...

как выглядит собственно перекодировка, напишу, когда ты туда дойдешь... Smile
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Пт Июн 30, 2006 5:59 pm    Заголовок сообщения: Ответить с цитатой

Ясно Smile
На счёт книги: я тут какую-то скачал, почитать ещё, правда, не успел...

Вобщем, ReDim мне не грозит Smile У меня массив сразу будет динамический. Достаточно в обьявлениях написать: myTransTable: array of char :)

С instr тоже проблем нет. Функцию ей соответствующую, я знаю Smile
Но вот с EOF... Я не помню ничего похожего... Утром гляну Smile В крайнем случае как-нибудь выкручусь :)

Что касается:
Цитата:
эти "с нуля" и "с единицы" - самый большой и пожалуй, единственный гимор в бэйсике

я с тобой, пожалуй, не соглашусь. Smile Но, кстати, в Делфи есть похожие заморочки (это я про "ноли" и "еденицы") в разных типах для работы со строками. :)

Что касается хелпа: Я по-английски слабо врубаюсь. Так что лучше я пойду дальше читать "Гамлета" в оригинале, чем хелп от Майкрософта. Smile
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Пт Июн 30, 2006 6:47 pm    Заголовок сообщения: Ответить с цитатой

ты не понял... массив myTransTable и есть динамический, НО

для перекодировки (в ПП1) я использую индексный метод, в том
смысле, что беру байт из рома (ЧИСЛО) - это и есть индекс
элемента в массиве myTransTable() содержащего нужный мне
СИМВОЛ (строку)...

для обратной перекодировки из текста в байты (в ром), я
склеиваю все символы из myTransTable() в одну строку,
а потом беру символ из строки текста и ищу в той длинной...
ПОЗИЦИЯ (в символах!) этого найденного символа и есть код (ЧИСЛО),
который нужно положить в RОМ...

поэтому как ни крути, получается, что SBCS перекодировка
реализуется ооочень просто (DBCS с небольшим гимором),
а MBCS ты вообще на этом алгоритме не сделаешь...



[маленькая сносочка Smile ]

SBCS - Single Byte Character Set (однобайтовая кодовая страница),
где один символ всегда кодируется кодом от 0 до 255 (0-FF), характерные представители таких кодировок windows-1251, cp866

DBCS - Double Byte Character Set (двухбайтовая кодировка), где каждый символ всегда кодируется двумя байтами и может принимать
значения от -32767 до +65535 (0000-FFFF), характерный
представитель cp932(японская кодовая страница в MS Windows)

MBCS - Multy Byte Character Set... спроси Джинна про Shift-JIS или UFT-8 ;)


[и еще одна сносочка]
в VB строки хранятся в Unicode (utf-16), а при записи на диск
(или выводе на экран) перекодируются в кодироку платформы
(см. Windows Locale), поэтому обращай внимание, где я пишу СИМВОЛ,
а где БАЙТ... это НЕ одно и тоже...
(еще раз перечитай, что такое "char", может статься, что это не совсем то, что тебе будет нужно...)
_________________
Всех их вместе переведём!


Последний раз редактировалось: Axel (Пт Июн 30, 2006 6:56 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Пт Июн 30, 2006 6:55 pm    Заголовок сообщения: Ответить с цитатой

Да нет, я понял Smile
Просто имел в виду, что не люблю заранее определённый размер массива.
К тому же в ПП, насколько я знаю, только SBCS используется...

А за инфу спасибо, тебе бы действительно справочники писать :)

Про Shift-JIS: что-то не хочется... Rolling Eyes
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Пт Июн 30, 2006 6:59 pm    Заголовок сообщения: Ответить с цитатой

именно из-за алгоритма перекодировки ПП1 не разрешает писать
в таблице больше одной буквы (символа) после знака равно...

(в ПП2 я эту незадачу устранил...)
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Сб Июл 01, 2006 4:21 pm    Заголовок сообщения: Ответить с цитатой

Вобщем написал, кривовато правда, но написал Smile Это я про загрузку таблицы Smile
Пара вопросов:
Твой ПП открывает файл с таблицей как бинарный, или как текстовый файл?
А то мне пришлось как текстовый его открывать (артачился, млин)...

Char использовать не стал. Сделал массивом String'ов.
Не сделал пока исключительные ситуации и компановку в одну строку. Ну и забивание массива нолями Smile
Вобщем альфа-версию процедуры сваял :)

Осталось протестить. Пока сделал в цикле вывод в лог значений CharPosition и myTransTable[i].
Как ни странно, всё сходится :)

P.S. Поставил сегодня "Delphi 8 Architect Edition". Ужас! Этот монстр в одну харю загнал мой комп в даун (я конечно понимаю, что мой комп ещё лет пять назад считался ниже среднего...), и это при том, что у меня вполне неплохо уживаются Delphi 7, VB 6, Foxit PDF reader, Delphi World, WinAMP, Firefox, Trillian, Thunderbird и ещё куча приложений!!!
К тому же конструктор форм сильно мне напомнил VB...
Вобщем, ".NET" мне не нужен Smile
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Сб Июл 01, 2006 8:40 pm    Заголовок сообщения: Ответить с цитатой

ПП1 открывает файл с таблицей как текстовый, а файл с игрой как двоичный... (однако, ПП2 читает таблицу как двоичный файл и догадывается в юникоде ли она или нет и далее поступает соответственно)

для ВЫнимания текста из игры тебе НЕ нужна таблица перекодировки в виде одной строки и присваивать нули 0x00 пустым элементам массива не нужно и даже вредно...
(ты даже можешь писать больше одного символа после знака равно...
только имей ввиду, что перекодировать обратно (вернуть текст в игру) ты не сможешь, не придумав своего алгоритма для перекодировки из текста в байты...
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Вс Июл 02, 2006 3:07 am    Заголовок сообщения: Ответить с цитатой

Да, про считывание больше чем одного символа после "равно" я уже думал... И о том, чем это чревато для вставки текста...
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Вс Июл 02, 2006 3:18 pm    Заголовок сообщения: Ответить с цитатой

Вобщем сегодняшний день прошёл впустую, т.к. я заболел Sad
За Делфи сел буквально на пять минут, до тех пор, как он стал ругаться на несовместимость типов Byte и String (это я пытался из массива ROM считать первый байтик в строку s) Smile
Кстати, а нафига нам вообще грузить ROM? Rolling Eyes

Axel писал(а):
ПП1 открывает файл с таблицей как текстовый

И в то же время ты с помощью функции Mid считывал из неё байт до равно, и байт после. А мне пришлось ДВА символа до, и один после...

Вобщем надо думать... Возьму завтра на работу книгу по Делфи, может откапаю что-нибудь интересное... Впрочем, это врядли...
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Вс Июл 02, 2006 4:20 pm    Заголовок сообщения: Ответить с цитатой

&ryu писал(а):
...делфи стал ругаться на несовместимость типов Byte и String (это я пытался из массива ROM считать первый байтик в строку s) Smile

это, какраз то, что я говорил... в делфи всё тоже самое БАЙТ это НЕ СИМВОЛ(буква) и для преобразования из строк в байты и наоборот есть спец функции...

вообще говоря байт - это число, поэтому ты можешь использовать функцию вроде VB'шной CHR(число), она вернёт тебе "строку"

для преобразования символа в байты (строка --> число) есть другая функция - ASC(строка) или ASCW...


&ryu писал(а):
Кстати, а нафига нам вообще грузить ROM? Rolling Eyes

доступ к оперативной памяти в разы быстрей дисковых операций...


&ryu писал(а):
Axel писал(а):
ПП1 открывает файл с таблицей как текстовый
И в то же время ты с помощью функции Mid считывал из неё байт до равно, и байт после. А мне пришлось ДВА символа до, и один после...

нет, функция MID работает со строками (вырезать из строки подстроку,начиная_с_позиции, длинной_столько-то)
ты просто заблудился в её необязательных параметрах :)

x содержит позицию "=" в строке s (x = InStr(s, "=")

сначала кусаем от неё с позиции 1 до x -1 (исключая сам "=")
(обычно в таблице перекодировки ДО знака равно будет пара байт(букв)... совсем я тебя запутал Smile )

пример:
Код:
41=A

вот "41" это строка из пары букв Smile её-то я и откусываю...
то, что откусили (строку) переводим в число, для этого есть функция VAL(строка)... чтобы она поняла, что "41" это в хексах,
в VB надо приклеить с этой строке "&h" (получится ...=VAL("&H41") )
Код:
charposition = "&h" + Mid(s, 1, x - 1)
charposition = Val(charposition)


ну а потом кусаем один символ после знака равно:
Код:
myTransTable(charposition) = Mid(Mid(s, x + 1), 1, 1) ' берем ТОЛЬКО один первый символ
другими словами

myTransTable(charposition) = Mid(всё_что_после_равно, 1, 1)
'с первой позиции всего_что_после_равно откусить 1 символ :)


[edit]
стал вчитываться и увидел, ошибочку в своём коде... Embarassed
ЛИБО переменная charposition должна быть объявлена как Variant
либо должна вылезать ошибка преобразования типов...
вот тут --> charposition = Val(charposition)...
...либо я нифига не понимаю почему написанное срабатывает... Rolling Eyes
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Вс Июл 02, 2006 4:53 pm    Заголовок сообщения: Ответить с цитатой

У меня мозг почти не работает, поэтому по-порядку:
1. Функция Mid читает БАЙТ, так?
Я использовал функцию copy(файл, начало, кол-во символов), она считывает символы.

2.
Axel писал(а):
доступ к оперативной памяти в разы быстрей дисковых операций...

Я пошутил... :)

3. Вобщем, привожу листинг процедуры загрузки таблы:
Цитата:
Var
TableFileName: string;
myTransTable: array of string;
-------------
procedure TMainForm.ReadTBLfile(Sender: TObject);
var
s,charposition: string;
i,x: integer;
F: textfile;
begin
if opendialog.Execute then //Запускаем диалог...
begin
SetLength(myTransTable,256); //Устанавливаем размер массива...
assignfile(f,opendialog.FileName); //Ассоциируем файл с файловой переменной...
reset(f); //открываем файл для чтения
while not eof(f) do //ну с этим-то трабл нет Smile
begin
readln(f,s); //Читаем строку в переменную "S"
x:=pos('=',s); //Ищем "Равно" в строке "S"
charposition:= copy(s, x-2, 2); //Читаем ДВА Символа до знака равно...
i:=StrToInt('$'+charposition); //Переводим значение "charposition" в числовое, с присвоением его переменной "i"
myTransTable:= copy(s,x+1,1); //Заносим в элемент массива под номером "i" символ после знака "равно"
mainform.LogText.Text:=logtext.Text+charposition+'='+myTransTable+#13#10; //Пишем в Лог (это я использовал для проверки Smile )
end;
end;
end;


Axel писал(а):
для преобразования из строк в байты и наоборот есть спец функции...

Вот их-то я завтра и буду искать Smile
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Вс Июл 02, 2006 5:04 pm    Заголовок сообщения: Ответить с цитатой

&ryu писал(а):
У меня мозг почти не работает, поэтому по-порядку:
1. Функция Mid читает БАЙТ, так?

нет, она возвращает строку...

кстати, integer (int16) тебе может не зватить... это только +-32767...
по идее тебе нужен longint
(пусть Хаос или Джинн меня поправят..., как там в дельфи это правильно называется...)

[edit]
что-то мне вот это не нравится:
...:=StrToInt('$'+charposition);

у тебя-же вроде "#" признак hex'а... не поверю, что дельфи такой не последовательный...
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
&ryu



Зарегистрирован: 09.10.2004
Сообщения: 259
Откуда: Город Юности

СообщениеДобавлено: Вс Июл 02, 2006 5:20 pm    Заголовок сообщения: Ответить с цитатой

Axel писал(а):
кстати, integer (int16) тебе может не зватить... это только +-32767...
по идее тебе нужен longint

Я об этом думал, когда начал переписывать ПП Smile
Сверевшись со справочником, я выяснил, что в Делфи:
Integer: -2147483648...2147483648 Signed 32-bit
и LongInt: -2147483648...2147483648 Signed 32-bit
Не обнаружив в них никакой разницы, я начал юзать Integer (привычнее).

А теперь, я ещё знаю, что "Integer" из VB равен "SmallInt" из Делфи (-32768...32768 signed 16-bit) :)

Вот такие пироги :)

[edit]
Всё ОК. Не знаю как это обьяснить, но всё в порядке Smile Для указания, что строка является HEX, используется "$", а почему там "#" я, если честно, не знаю..
_________________
"Человек сам вершит свою судьбу..."(Ричард Рал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Djinn
RRC2008
RRC2008


Зарегистрирован: 16.03.2004
Сообщения: 633
Откуда: Москва

СообщениеДобавлено: Пн Июл 03, 2006 6:24 am    Заголовок сообщения: Ответить с цитатой

Axel писал(а):
кстати, integer (int16) тебе может не зватить... это только +-32767...

integer = int16 только в турбопаскале. В делфи integer = int32
А $ всегда был признаком хекса ещё со времён паскаля. А # - это признак символа.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Вт Июл 04, 2006 4:23 pm    Заголовок сообщения: Ответить с цитатой

Вчера вот скачал исходники ПП, все никак не пойму - почему я не сделал этого раньше? Не знаю
Уже второй день активно черпаю знания и сделал для себя открытие - эта программа написана не на сверх языке, который за гранями моего понимания, а на таком же земном бейсике, на котором пишу я! Smile
Лучше бы вместо этих всяких тупых учебников выпускали сборники исходников подобных программ. Сегодня вот благодаря исходникам ПП накатал прогу, сортирующую строки в таблице символов по длине после знака "=".

Короче, огромное спасибо Акселю за исходники.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Вт Июл 04, 2006 10:17 pm    Заголовок сообщения: Ответить с цитатой

HoRRoR писал(а):
Вчера вот скачал исходники ПП, все никак не пойму - почему я не сделал этого раньше? Не знаю

вот это похвально Smile
(не то, что скачал, а то, что не поленился, и посмотрел что внутри Smile )

кстати, вот АнС считает, что все проги должны быть написаны на С++
ну на худой конец на просто Си :)

а я ему всё толдычу, что в проге главное - это то, что она работает,
а на чем написана, совершенно не имеет значения... Smile
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2794

СообщениеДобавлено: Вт Июл 04, 2006 10:44 pm    Заголовок сообщения: Ответить с цитатой

Axel писал(а):
кстати, вот АнС считает, что все проги должны быть написаны на С++
ну на худой конец на просто Си Smile


Ээа, я так не говорил!! Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.shedevr.org.ru -> Утилита PokePerevod Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group