Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
"Ассемблер? Это просто! Учимся программировать (FAQ)"
Выпуск № 220
от 19.03.2002, 02:05
Администратор: Калашников Олег
Сайт Администратора: Программирование на Ассемблере
Старейшины рассылки |
1. Broken Sword - ответов: 395. 2. Painbringer (нечто наподобие домашней страницы) - ответов: 371. 3. Sensey - ответов: 327. 4. DiGiT - ответов: 267. 5. Dron (Операционная система с нуля!) - ответов: 267. |
Новости |
Вопрос № 242 |
Здраствуйте эксперты!
Помогите написать прогу на асм'е встроенном в Paskal.
Прога должна обробатывать нажатие левой кнопки мыши.
К примеру,
меню:
1. ---------
2. ---------
при нажатии мыши на 1-е или 2-е меню вызывалось какоенить событие (к примеру подменю:).
-----------------------------
Собственно трудность вызывает работа с видио режимом
...
asm
mov ax, 12h
int 10h
mov ax, 0
int 33h
mov ax, 1
int 33h
mov ax, ch
mov cx, 2h
;Здесь в dx нужно кинуть...? А начто es установить?
int 33h
end;
...
Всего наилучшего...!
Отправитель: kuper
Вопрос отправлен: 14.03.2002, 05:59
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS
_______________
Отвечает DiGiT
Приветствую Вас, kuper!
Так ты в es:dx - адрес той процедуры, которая и будет выводить меню. Но если у тя прога будет завершаться, а нужна будет та же реакция, делай резидентом(не знаю даже как в пасе).
Отправлено: 14.03.2002, 07:07
Отправитель: DiGiT (регистрация: 28/12/2001, ответов на счету: 267)
ICQ:133534725
Russia(),Student
Вопрос № 244 |
Привет эксперты!
купил я компашку на рынке с windows xp proffesional
начал устанавливать,и не где не смог найти лицензионный(25-символьный)номер
может кто пришлет?
Спасибо.
Отправитель: Евгений (vetal_kz@mail.ru)
Вопрос отправлен: 14.03.2002, 09:20
Подгруппа: Пользовательская работа с Windows
_______________
Отвечает DivX
Здравствуйте, Евгений!
Попробуй FKG7H-4F3V6-VM38J-4QYPG-M23QY. Там вообще файлик должен быть на диске.
Отправлено: 14.03.2002, 11:20
Отправитель: DivX (регистрация: 28/12/2001, ответов на счету: 226)
_______________
Отвечает VladK
Здравствуйте, Евгений!
Посмотри в корне каталога диска текстовый файл "install", по крайней мере у меня номер там. Еще может быть "Readme!!!",
"Crack" или что-то подобное.
VladK
Отправлено: 14.03.2002, 12:16
Отправитель: VladK (регистрация: 11/03/2002, ответов на счету: 6)
Student
Россия, Свердловская обл.
_______________
Отвечает baldr
Добрый день, Евгений!
Поищи на сайте www.cracks.am - я там видел несколько...
Отправлено: 14.03.2002, 22:58
Отправитель: baldr (регистрация: 28/12/2001, ответов на счету: 119)
URL: http://www.dospage.far.ru - Сайт об ОС DOS. Всем, кто любит эту ОС!
Россия, г. Семенов, Нижегородская обл.
_______________
Отвечает MovBlack
Здравствуйте, Евгений!
Пришли вопрос на kp580@yandex.ru числа 21 я попродую найти
Отправлено: 15.03.2002, 06:00
Отправитель: MovBlack (регистрация: 13/03/2002, ответов на счету: 8)
AsmSOft
Адрес: -
Тел.: -
-
Россия, Владивосток
_______________
Отвечает jc
Здравствуйте, Евгений!
Мой такой FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8
Отправлено: 15.03.2002, 13:53
Отправитель: jc (регистрация: 05/02/2002, ответов на счету: 41)
Россия, Йошкар-Ола
_______________
Отвечает kostik
Добрый день, Евгений!
Вы хорошо посмотели на диске на предмет наличия всяких текстовых файлов? В приложении есть лицензионный номер на WinXP professianl Rus. Только кажется, что он не поможет.
FKG7H-4F3V6-VM38J-4QYPG-M23QY
Приложение:
Отправлено: 17.03.2002, 13:49
Отправитель: kostik (регистрация: 01/02/2002, ответов на счету: 87)
URL: http://www.ospedia.boom.ru - Что-то вроде домашней странички
mrkirov@mail.ru ICQ UIN #151014798
Россия, Хабаровск
Вопрос № 246 |
Здравствуйте эксперты!
У меня есть старая ДОСовская программка. При её запуске выдаётся такое сообщение: Runtime Error 200 at 1641:00BF. знаю, что причина этому - криворукие программёры из Borland. Какие байты надо исправить и на какие, чтобы программка заработала!
Отправитель: Константин
Вопрос отправлен: 14.03.2002, 10:26
Подгруппа: Пользовательская работа с Windows
_______________
Отвечает змей
Здравствуйте, Константин!
Ну ты сказал....в разных прогах разные байтики....
коть бы прислал прогу...а вооще из голого доса пробовал запускать??
Отправлено: 14.03.2002, 11:23
Отправитель: змей (регистрация: 28/12/2001, ответов на счету: 235)
_______________
Отвечает Frank
Здравствуйте, Константин!
Это из-за быстроко компа
Скачай вот это http://yastrebov.chat.ru/crtfix.zip
там по-моему есть прога, которая этот исправляет.
Отправлено: 15.03.2002, 09:08
Отправитель: Frank (регистрация: 14/01/2002, ответов на счету: 98)
КПИ,ФЭЛ,ДА-02
ICQ: 100341415 E-mail: Frank_U@mail.ru
Украина, Киев
Вопрос № 248 |
Уважаемые эксперты, я застрял на 15-м выпуске. Не понял следующее:
1. В процедуре обработки 21-го прерывания мы вызываем само это 21-е прерывание. При этом получается, что управление передается оригинальному обработчику. А почему не попадаем в НАШ обработчик? Что и как распознает, что надо прыгать именно туда (в оригинал), а не в начало нашего обработчика? Может это зависит от состояния какого-нибудь регистра или флага? Или это так принято если из обработчика прерывания вызвать само это прерывание? И вообще, если нам нужно оригинальное прерывание, почему бы нам его не вызвать так же, как вызвали парой строчек выше:
jmp dword ptr cs:[Int_21h_vect] ?
2. Переменная Num_status.
Почему cmp cs:Num_status,0 а не cmp Num_status,0 ? И потом, как я понимаю сравнивается с нулем содержимое ячеек по адресу cs:0000 (пока Num_status=0) или cs:0001 (после того, как мы изменили бит). Но ведь это адреса в PSP и как писал эксперт GL( "Ассемблер? Это просто! Учимся программировать (FAQ)",Выпуск № 211):
Структура префикса:
0000h - Системное прерывание
0002h - Сегмент, конец выделенного блока
Вобщем, сколько я репу ни чесал, так и не смог разобраться, приходится обращаться к профессионалам. Заранее благодарен.
Отправитель: pasha
Вопрос отправлен: 14.03.2002, 13:57
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS
_______________
Отвечает VicSimon
Добрый день, pasha!
1. Не совсем так... в обработчике команда int 21h вызывает НАШ обработчик, который проверяет значение регистров (если не 4Eh и не 4Fh - переход в исх. обработчик). Если в данном случае вместо int 21h перейдем к оригинальному обработчику по jmp, то обратно в свой обработчик НЕ вернемся (в стеке в данный момент адрес возврата вызывающей прерывание программы). Вообще-то M$ настаивает на том, что обработчики прерываний НЕ реентерабельны (нельзя из обработчика прерывания вызывать это же прерывание).
2. cmp Num_status, 0 равнозначна cmp ds:Num_status, 0. При входе в обработчик ds НЕ равен cs! Поэтому без указания префикса сегмента второй операнд у нас будет где-то в сегменте данных вызывающей программы...А про проверку содержимого cs:0000 на 0 не понятно... В какой строке эта проверка?
Отправлено: 14.03.2002, 14:40
Отправитель: VicSimon (регистрация: 25/01/2002, ответов на счету: 37)
Россия, Красноярск
_______________
Отвечает Beeblebrox
Приветствую Вас, pasha!
1.Команда int 21h вызывает обработчик 21-го прерывания (не важно, наш или не наш обработчик). Если вектор 21h ссылается на наш участок кода, то это будет наш обработчик. Внутри нашего обработчика мы имеем полное право (но не обязаны) вызвать старый обработчик, чтобы помимо нашего кода выполнились еще стандартные действия, которые делает старый обработчик.
2.Команда cmp cs:Num_status,0
У нас в сегменте кода есть переменная Num_status. Нам совершенно наплевать, какой у нее адрес в памяти - пусть этим занимается транслятор. Префикс cs: означает, что переменная находится именно в сегменте кода, а не в сегменте данных, как думал бы транслятор, если бы не было префикса.
Отправлено: 14.03.2002, 15:07
Отправитель: Beeblebrox (регистрация: 13/03/2002, ответов на счету: 11)
URL: http://beeblbrx.narod.ru - Beeblebrox / TMA HomePage
ICQ #75393045
Ukraine, Kharkov
_______________
Отвечает Broken Sword
Привет Паша!
1. Я понял твой вопрос. Это ты про то место, где
mov ah,2Fh
int 21h
и
mov ah,2Ch
int 21h
в нашем обработчике int 21h. Тогда у меня вопрос к тебе: откуда ты взял, что УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ ОРИГИНАЛЬНОМУ ОБРАБОТЧИКУ int 21h?... Вообще важно знать одно ЗОЛОТОЕ ПРАВИЛО, которого почему то нет в книжках и журналах (скромно :) :
ПРИ ПРЕРЫВАНИИ УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ ВСЕГДА НА ТУ ПРОЦЕДУРУ, АДРЕС КОТОРОЙ В ДАННЫЙ МОМЕНТ ЗАПИСАН В ТАБЛИЦЕ ВЕКТОРОВ ПЕРЫВАНИЙ (нулевой сегмент)!!!. Если сильно хош, можешь повесить его на стенку :) (его - правило, а не прерывание...). Так вот... мы его перехватили, и управление передастя на НАЧАЛО НАШЕГО ОБРАБОТЧИКА (!) т.е. на команду cmp ax,9889h в не зависимости от того, где мы его вызываем (см. золотое правило - важно то, что в ТАБЛИЦЕ ВЕКТОРОВ!, а там мы!)
Теперь представь, что ты процессор :). Что ты делаешь? прыгаешь на Check_funcs и т.д. причем как не извращайся и не крутись, но если ah не равно 98h или 4Eh или 4Fh (а оно таки не равно!!!, т.к. равно 2F или 2С в данном случае...) ты попадаешь на
Go_21h:
jmp dword ptr cs:[Int_21h_vect]
все? душа успокоена... управление возвращено старому обработчику.
2. Тоже один из кажущихся сложных моментов для начинающих в ассемблере. Но все как всегда просто. Смотри, если написать:
cmp Num_status,0 то фактически команда оттранслируется в cmp ds:Num_status,0 (см. справочники, если не веришь, по умолчанию всегда берется ds). Теперь сложно...
Num_Satus находится в том же сегменте, что и ВЕСЬ наш резидент, что и ВСЕ наши обработчики соответсвенно. Теперь, важный момент: ЕДИНСТВЕННЫЙ СЕГМЕНТНЫЙ РЕГИСТР, КОТОРЫЙ РЕАЛЬНО УКАЗЫВАЕТ НА ЭТОТ САМЫЙ НАШ СЕГМЕНТ ПЕРЕД ВЫПОЛНЕНИЕМ КОМАНДЫ cmp cs:Num_status,0 - ЭТО CS!!!!!!!! DS УКАЗЫВАЕТ НА СОВЕРШЕННО ЛЕВЫЙ СЕГМЕНТ!!!! ПОНЯТНО ТЕПЕРЬ ПОЧЕМУ важно писать именно cs: ? чето я разорался... думаю что понятно.
теперь еще что. твоя фраза "...по адресу cs:0000 (пока Num_status=0) или cs:0001...", комментировать ее не буду, скажу только что так бы было только в том случае, если б
cmp cs:[Num_status],0 (квадратные скобки видно?)...
ааааа. тебя сбило с толку cs:Num_status!!! тут вообще следует читать не "взять чето там по адресу CS:XXXX", а "взять ЗНАЧЕНИЕ XXXX ИЗ (!) СЕГМЕНТА CS!!!" продумай этот весь гон и все станет ясно
Отправлено: 14.03.2002, 16:24
Отправитель: Broken Sword (регистрация: 28/12/2001, ответов на счету: 395)
ICQ#64476575
Украина, Одесса
_______________
Отвечает GL
Здравствуйте, pasha!
1. Мы не попадаем в наш обработчик, потому что в Int_21h_vect хранится адрес оригинального обработчика, и перейдя по этому адресу, мы как бы перепрыгиваем через наш. И еще, если мы выполняем переход(jmp dword ptr cs:[Int_21h_vect]) то уже не возвращаемся в наш обработчик, а если вызываем оригинальный (call dword ptr cs:[Int_21h_vect]) то он отработает и управление опять вернется в наш обработчик.
2. Здесь используется cs:Num_status для того, чтобы адресоваться через сегментный регистр cs. Если этого не делать, то по умолчанию компилятор использует ds и пришлось бы дополнительно сохранять его старое значение и настраивать на сегмент нашей программы.
В строке cs:Num_status под Num_status подразумевается не то, что хранится в этой ячейке, а адрес этой ячейки. А т.к. ячейка Num_status находится в теле самой программы, то и адрес её не может указывать на PSP.
Отправлено: 14.03.2002, 19:26
Отправитель: GL (регистрация: 02/03/2002, ответов на счету: 25)
Амурская обл., Благовещенск
_______________
Отвечает Ayl
Приветствую Вас, pasha!
К сожалению, я не смог посмотреть программу 15-го выпуска, поэтому не могу точно сказать, за счет чего обходится наш обработчик 21-го прерывания. Могу предложить на выбор несколько объяснений:
1. Наш обработчик реально перехватывает только несколько функций и поэтому при вызове 21-го прерывания с "чужой" функцией наш обработчик это обнаруживает и передает управление дальше.
2. В нашем обработчик есть флаг "Уже обрабатываю" и поэтому при повторном вызове 21-го прерывания происходит немедленная передача управления в оригинальный обработчик.
3. Перед вызовом восстанавливаем оригинальные значения в таблице векторов. Ну это уже просто бред!
Каких-то специальных флагов, регистров и тем более автоматической блокировки повторного вызова нет.
Второй вопрос. При выполнении команды сравнения (насколько я понимаю из контекста, данная команда находится в обработчике прерывания) мы не можем гарантировать, что регистр сегмента данных ds имеет значение, соответствующее нашему сегменту данных. Единственные значения, за которые мы можем не опасаться, это значения регистров cs и ip. Так как у нас переменная Num_status находится в сегменте кода (у нас программа типа COM), то для доступа к ней мы и указываем переопределение сегмента на cs. Можно было бы написать и так:
push ds
push cs
pop ds
но это длиннее, да и стек не резиновый. Нам еще в нем регистры сохранять!
По поводу сравнения. При прямой адресации типа cs:Num_status компилятор вычисляет смещение переменной Num_status относительно сегмента, в котором она расположена (в нашем случае это сегмент кода, который определяется сегментным регистром cs) и это значение записывает в команду. При выполнении команды процессор берет значение сегментного регистра cs, комбинирует его со смещением, указанным в команде, и выбирает значение, которое находится в памяти по полученному адресу. Вот это значение и сравнивается с нулем. По хорошему, эту команду, конечно, следовало бы записать вот так:
cmp cs:[Num_status], 0
но компилятор допускает и запись без скобок, потому что из контекста ясно, что идет обращение именно к значению в памяти, а не по адресу, которое образуется из комбинации регистра cs и значения переменной Num_status.
Вот вроде и все, что можно сказать по этому поводу.
Отправлено: 14.03.2002, 22:01
Отправитель: Ayl (регистрация: 28/12/2001, ответов на счету: 170)
Россия, Санкт-Петербург
_______________
Отвечает DiGiT
Приветствую Вас, pasha!
Мы не вызываем само это прерывание. Вызов прерывания это int xx
или pushf call addres. А мы просто возвращаем управление старому, тот который досовский. Можешь не возвращать, тогда этот сервис просто не будет воркать.
2. Потому что по умолчанию все адрессуется с помощью ds.
Ты можешь сделать
mov ax,cs
mov ds,ax
и не писать cmp cs:Num_status,0; а просто cmp Num_status,0
Отправлено: 15.03.2002, 04:49
Отправитель: DiGiT (регистрация: 28/12/2001, ответов на счету: 267)
ICQ:133534725
Russia(),Student
Вопрос № 249 |
Здравствуйте!
Хотел бы знать ваше мнение о мониторе SAMSUNG SyncMaster 757NF.
Спасибо.
Отправитель: Tshchinski Nazar
Вопрос отправлен: 14.03.2002, 19:30
Подгруппа: Модели, виды и типы компьютеров (hard)
_______________
Отвечает DiGiT
Приветствую Вас, Tshchinski Nazar!
Нормальный монитор. Правда он вроде не плоский судя по маркировке. Бери DF. А так удобно в общем то программить.
ЗЫ СОвет: такие вопросы задавайте, оставляя мыло.
Отправлено: 15.03.2002, 04:39
Отправитель: DiGiT (регистрация: 28/12/2001, ответов на счету: 267)
ICQ:133534725
Russia(),Student
_______________
Отвечает MovBlack
Здравствуйте, Tshchinski Nazar!
Средненький монитор.
Для работы вполне хватет
Бывает выступают жировые пятна но это ерунда
Отправлено: 15.03.2002, 06:34
Отправитель: MovBlack (регистрация: 13/03/2002, ответов на счету: 8)
AsmSOft
Адрес: -
Тел.: -
-
Россия, Владивосток
_______________
Отвечает Frank
Доброе время суток, Tshchinski Nazar!
Неплохой монитор. Труба Mitsubishi. А она намного круче LG и самсунга. У меня самого стоит 700NF. Бери не пожалеешь. Только при покупке внималельно присмотрись к монитору. Монитор это вещь уникальная каждый монитор особенный ;)
Отправлено: 15.03.2002, 09:05
Отправитель: Frank (регистрация: 14/01/2002, ответов на счету: 98)
КПИ,ФЭЛ,ДА-02
ICQ: 100341415 E-mail: Frank_U@mail.ru
Украина, Киев
Вопрос № 250 |
чУФТЕФЙМУС ЧПФ У ЛБЛПК РТПВМЕНПК: УФБЧМА ПВТБВПФЮЙЛ ДМС 1C (РПМШЪПЧБФ. РТЕТ. ФБКНЕТБ Ч ДПУЕ) Й Ч ОЕН РЙЫХ Ч ЧЙДЕПРБНСФШ (D800h)... РТЙ РТЙ БРРБТБФОПН РТЕТЩЧБОЙЙ ОБ ЬЛТБОЕ ОЙЮЕЗП ОЕ ПФПВТБЦБЕФУС, ЕУМЙ ЧЩЪЧБФШ Ч ГЙЛМЕ int 1c - ЧУЈ ТБВПФБЕФ. УЛБЦХ УТБЪХ - ИПЮХ ХЧЙДЕФШ Ч ПЛОЕ ДПУБ Ч ЧЙОШДЕ. УБНПЕ ЙОФЕТЕУОПЕ, ЮФП ЕУМЙ УЧЕТОХФШ Й ТБЪЧЕТОХФШ ПЛОП ЙМЙ РЕТЕФБЭЙФШ ЕЗП, Ч ПВЭЕН ЕУМЙ ПОП РПМХЮБЕФ УППВЭЕОЙЕ ОБ РТПТЙУПЧЛХ, ФП ЧЩЧЕДЕООЩЕ ДБООЩЕ РПСЧМСАФУС ОБ ЬЛТБОЕ. ъБТБОЕЕ УРБУЙВП.
Отправитель: igorek
Вопрос отправлен: 14.03.2002, 19:34
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS
_______________
Отвечает Frank
Приветствую Вас, igorek!
0D800h - c чего это ты взял. Надо 0B800h (это первая страница видеопамяти)
Отправлено: 15.03.2002, 09:06
Отправитель: Frank (регистрация: 14/01/2002, ответов на счету: 98)
КПИ,ФЭЛ,ДА-02
ICQ: 100341415 E-mail: Frank_U@mail.ru
Украина, Киев
_______________
Отвечает LAO
Доброе время суток, igorek!
Во первых - адрес видеопамяти не 0d800h, а 0b800h.
Во-вторых - не пытайся испоьзовать другие прерывания в обработчике прерываний - они не доступны. Только прямой доступ к видеопамяти (портам и пр.).
Отправлено: 15.03.2002, 11:44
Отправитель: LAO (регистрация: 05/03/2002, ответов на счету: 40)
Россия, Москва
Вопрос № 92 |
Здраствуйте ув. эксперты!!!...
...я к вам опять за помощью;))...
...сама учу Дельфи...но что-то стало не совсем получатся;))..дело вот в чем:
функция IntToStr или StrToInt...если я правильно понимаю она такая-же только наоборот, в книжке этого нету;(...вот...и там[в книге] ее описывают, рассказано для чего она и приводят такой пример:
y:=StrToInt(Trim(Edit1.Text))
...а в другой инфе была аналогичная строка но без "Trim"...просто
y:=StrToInt(Edit1.Text)
...как правильно?...что это за штука такая Trim?...для чего она и как ее кушать?...
ЗЫ:когда я пробовала использовать ее[функцию], Дельфи не берет строку такого вида не с тримом не без него...
И вопрос не по теме...как перекинуть подписку на другой адрес?
..и еще...большое-большое СПАСИБО за помощь с вопросом про корзинку...оччень помогли!!!..;))...
С уважением и вся в ожидании tiranochka;))
Отправитель: tiranochka (tiranochka@hotmail.ru)
Вопрос отправлен: 03.03.2002, 18:58
Подгруппа: Пользовательская работа с Windows
_______________
Отвечает BMR
Добрый день, tiranochka!
Trim удаляет пробелы в начале и в конце строки. В help это английским по белому :) написанно. Кушают её Trim(X:String):String;
А функция может неработать если введены не только цифры, но и буквы.
PS. С наступающим.
Отправлено: 04.03.2002, 01:56
Отправитель: BMR (регистрация: 10/02/2002, ответов на счету: 109)
Россия, Пенза
_______________
Отвечает DiGiT
Здравствуйте, tiranochka!
Trim() - удаляет ведущие и ведомые пробелы из строки, т.е. в начале и в конце строки.
Отправлено: 04.03.2002, 01:57
Отправитель: DiGiT (регистрация: 28/12/2001, ответов на счету: 267)
ICQ:133534725
Russia(),Student
_______________
Отвечает vitya
Доброе время суток, tiranochka!
Фунция StrToInt превращает строку в число. Так вот Тrim сначала убирает пробелы спереди и сзади, и фунции достается чистое число. Вот и все. IntToStr просто конвертирует число в строковое представление.
Отправлено: 04.03.2002, 12:08
Отправитель: vitya (регистрация: 03/01/2002, ответов на счету: 39)
103935193
Armenia, Yerevan
_______________
Отвечает Vladimir
Доброе время суток, tiranochka!
Trim(Str) это удаление лишних пробелов.
Отправлено: 04.03.2002, 13:15
Отправитель: Vladimir (регистрация: 28/12/2001, ответов на счету: 38)
Россия, Конаково Тверской обл.
_______________
Отвечает GL
Доброе время суток, tiranochka!
Функция Trim урезает пробелы в начале и в конце строки. Есть ещё TrimLeft - вырезает пробелы только в начале и TrimRight - только в конце. С тримом будет надёжнее, хотя можно и без него, если уверены, что пробелов в строке не будет.
По поводу работоспособности - рабочие оба варианта. Убедитесь, что тип переменной y целочисленный (var y: integer;).
Приложение:
Отправлено: 04.03.2002, 19:18
Отправитель: GL (регистрация: 02/03/2002, ответов на счету: 25)
Амурская обл., Благовещенск
_______________
Отвечает jc
Доброе время суток, tiranochka!
Эти функции переводят из целого числа в строку и на оборот! Если переводить из строки в целое надо писать temp:=StrToInt(Edit1.Text), но при одном условии если поле содержит кроме целых чисел еще и другие символы то при выполнении программы будет ошибка ! Соответсвенно обратная ей функция работает анолоогично ! Только посел присвоения нужно перехватывать ошибки при помощи исключений или ограничеть ввод в поле ! С уважением ...
Отправлено: 05.03.2002, 08:46
Отправитель: jc (регистрация: 05/02/2002, ответов на счету: 41)
Россия, Йошкар-Ола
_______________
Отвечает Cardinal
Добрый день, tiranochka!
StrToInt(S:String):Integer - переводит строчку (например из TEdit.Text) в целое число.
IntToStr(I:Integer):String - наоборот.
Trim(S: string): String - убирает вначале и в конце строки лишние пробелы и спецсимволы.
Если ругается о том, что ненаходит функции - подставь в раздел USES имя модуля - Sysutils - функции эти лежат в нем. Ну и соответственно на форме должен быть объект Edit1 ;-)
Приложение:
Отправлено: 06.03.2002, 07:56
Отправитель: Cardinal (регистрация: 22/01/2002, ответов на счету: 43)
ДГТУ
evg_list@aport2000.ru
Россия, Ростов-на-Дону
_______________
Отвечает Painbringer
Доброе время суток, tiranochka!
эээээ.. так у тебя edit1 то на форме есть? присобачь. trim он типа пробелы лишние убирает... вообще он нафиг не нужен, делфи и без него усе поймет.
PS а хелп читать типа не модно щас.
заранее поздравляю с 8 марта, но вообще - RTFM!!!
Отправлено: 07.03.2002, 01:14
Отправитель: Painbringer (регистрация: 28/12/2001, ответов на счету: 371)
URL: http://limanski.narod.ru - нечто наподобие домашней страницы
ICQ 146861957
Россия, Дзержинск, Нижегородская обл.
_______________
Отвечает kostik
Доброе время суток, tiranochka!
насколько я знаю, фунция Trim просто удаляет пробелы справ и слева данной ей строки. То есть, если дана строка
" йу ке " , то после применения функции Trim, строка примет вид "йу ке"
Подписку можно перекинуть на другой адрес, зайдя на сайт Subscribe.ru. Там просто в настройках указать новый адрес. по новому адресу придёт подтверждение, на которое надо ответить
Отправлено: 07.03.2002, 16:18
Отправитель: kostik (регистрация: 01/02/2002, ответов на счету: 87)
URL: http://www.ospedia.boom.ru - Что-то вроде домашней странички
mrkirov@mail.ru ICQ UIN #151014798
Россия, Хабаровск
Форма отправки сообщения |
Заполните приведенную ниже форму для того, чтобы отправить вопрос. Дополнительную информации по пользованию формой для подписчиков и экспертов можно получить, нажав на знак вопроса в соответствующем разделе, при этом информация будет отображена в отдельном окне.
В почтовых программах форма не работает!!! Открывайте рассылку в браузере Internet Explorer, где и набирайте Ваш вопрос.
© 2000 - 2002 Россия, Москва. Авторское право: Калашников О. А. |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||