Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "пошарпану";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вниз

Початківцям програмістам. Етап 2. Знайти схожі гілки


Юрий Зотов   (2002-10-28 23:15) [0]

Отже, йдемо далі. Спочатку контрольні вправи за завданням 1 (вправи 1, 2 і 3 - це класика, їх треба запам'ятати назавжди).

1. Довести, що в будь-який позиційній системі числення її підставу має вигляд 10.

2. Беручи, що негативні числа зберігаються в додатковому коді, довести, що число -1 в N-розрядному машинному коді записується у вигляді N одиниць при будь-якому N.

3. Довести, що машинна операція (I shl N) еквівалентна множенню I на 2 ^ N, а машинна операція (I shr N) еквівалентна целочисленному поділу I на 2 ^ N (запис "2 ^ N" означає "2 в ступені N" ).

4. З огляду на, що в Паскалі False - це нуль, а True - це одиниця, довести, що:
а). логічні вирази (I <0) і (I shr 31) еквівалентні, якщо I є 32-бітове ціле.
б). логічний вираз (I and 1) еквівалентно виклику функції Odd (I) (див. в хелпе).

5. У двухбайтового шестнадцатиричном вираженні FE40 and not (A2B1 or 5D) xor AEC
а). перевірити, чи встановлений 7-й або 11-й біт.
б). перевірити, чи встановлені 7-й і 11-й біти.
в). встановити 4-й і 12-й біти, скинути 3-й, 8-й і 13-й біти.
г). розкласти результат на старший і молодший байти.
При обчисленні виразу прийняти старшинство операцій, як в Delphi (див. В хелпе: "Operator precedence"). Не забути, що нумерація бітів йде справа наліво і починається з нуля.

Відповіді до вправи 5 привожу відразу, але для Вас же краще спочатку отримати їх самостійно. Спочатку обчислюємо результат виразу, враховуючи дужки і пріоритет операцій:
A2B1 or 5D = A2FD
not A2FD = 5D02
FE40 and 5D02 = 5С00
5С00 xor AEC = 56EC
Це і є кінцевий результат. Тепер даємо відповіді:
а). 56EC and 880 не дорівнює нулю - значить, або 7-й, або 11-й біт, або обидва разом встановлені.
б). 56EC and 880 не дорівнює 880 - значить, 7-й і 11-й біти одночасно НЕ встановлені.
в). 56EC or 1010 and not 2108 (отримаємо 56F4)
г). 56EC shr 8 - дає старший байт (дорівнює 56)
56EC and FF - дає молодший байт (дорівнює EC)

Тепер, переглянули всі завдання вправи і твердо (сподіваюся) засвоївши пройдений матеріал, робимо з них висновки і намагаємося поширити їх на Delphi.

1. Будь-яке число має величину і строкове представлення. Величина завжди невидима і не залежить ні від чого. Бачимо ж ми ТІЛЬКИ строкове представлення, і ТІЛЬКИ воно залежить від системи числення. В машині все числа зберігаються в 2-ної системі, а в Delphi-програми ми можемо використовувати або 10-ву, або 16-ву запис (причому ознакою 16-ної записи є симолів "$" на початку числа). Обидві форми абсолютно рівнозначні і повністю взаємозамінні - тобто, скрізь, де можна написати, наприклад, 255, з тим же успіхом можна написати $ FF (і навпаки). 16-ва запис є скороченою формою 2-ної записи, але пряму 2-ву запис Delphi не підтримує (хоча її можна використовувати в ассемблерних вставках).

2. Часті запитання на кшталт "як перевести значення числа з однієї системи в іншу" просто безглузді. Перекласти ЗНАЧЕННЯ (тобто, величину) числа не можна ніяк, тому що воно завжди одне і те ж. Перекласти можна ТІЛЬКИ строкове представлення числа, і в Delphi є дві функції, які повертають строкові уявлення чисел - IntToStr (10-ве) і IntToHex (16-ве). Є також зворотна їм функція StrToInt, що дає значення числа по його 10-ному або 16-ному строковому поданням. Є й інші (Format, StrToIntDef тощо. - див. Довідку).

Приклад перекладу 10-ної записи в 16-ву: IntToHex (StrToInt (Edit1.Text)).
Приклад зворотного перекладу: IntToStr (StrToInt ( "$" + Edit1.Text)).
В обох випадках, якщо текст в Edit1 не є правильним поданням числа, виникне помилка.

Тепер розберемо, як процесор (CPU) виконує арифметичні дії з цілими числами. Відразу обмовлюся, що приводиться нижче матеріал не є абсолютно точним. Він є вірним лише ПО ЗМІСТУ, оскільки нам зараз набагато важливіше зрозумілість матеріалу, а не його точність. Любителів абсолютної точності відсилаю до книг по CPU і Асемблеру.

Коли ми робимо арифметичні операції вручну, то часто говоримо - "на розум пішло". У CPU розуму немає, але зате у нього є регістр прапорів. Це просто набір бітів, в якому значення кожного біта имет цілком певний сенс. Молодший біт в цьому регістрі називається "прапор переносу" (CF - carry flag). Ось він-то і є той самий "розум", на який "пішло". Цей біт апаратно встановлюється в 1, якщо відбувається перенесення в старший розряд, або позика з старшого розряду (або в нуль, якщо перенесення / позики не відбувається). Оскільки CPU використовує двійкову систему, то немає необхідності пам'ятати, скільки саме переноситься або займається (завжди одиниця), досить пам'ятати сам факт перенесення або позички - а для цього потрібен всього 1 біт, яким і служить прапор CF. Ясно, що перенесення в неіснуючий розряд (або позику з нього) означає вихід за розрядну сітку.

11-й біт в тому ж регістрі називається "прапор переповнення" (OF - overflow flag). Він апаратно встановлюється в 1, коли при знакових операціях відбувається перенесення в старший (знаковий) розряд - що теж означає вихід за розрядну сітку.

=== см. Закінчення ===



Юрий Зотов   (2002-10-28 23:19) [1]

=== закінчення ===

Виникає питання - а що таке "знакова операція"? Згадаймо, що старший біт цілого числа дає його знак (1-мінус, 0-плюс). Але ж можна вважати і так, що саме число завжди позитивно, а старший біт є його частиною, а ніяким не знайомий. Тобто, ціле число може інтерпретуватися подвійно - як знакова і беззнаковое. Беззнакові числа не можуть бути негативними, але зате їх максимальне значення вдвічі більше, ніж у знакових (через зайву біта в розрядної сітці) - наприклад, Cardinal і Integer в Delphi. Так ось, знакова операція - це операція над знаковими числами.

Найдивовижніше, що при додаванні (а віднімання - це те ж саме складання, тільки у другого операнда спочатку змінюється знак) CPU не розрізняє знакові і беззнакові числа, але, тим не менш завжди отримує вірний результат. У цьому йому допомагають додаткова кодування чисел (згадали?) І прапори CF і OF.

Розглянемо 4 випадки складання однобайтових чисел в різних уявленнях.

Двійкове беззнакову Знакове CF OF

11111001 249 -7
00000010 2 +2
11111011 251 -5 0 0
вірно вірно

11111100 252 -4
00000101 5 +5
00000001 1 +1 1 0
помилка вірно


01111001 121 +121
00001011 11 +11
10000100 132 -124 0 1
вірно помилка


11110110 246 -10
10001001 137 -119
01111111 127 +127 1 + 1
помилка помилка

Таким чином, після закінчення операції додавання / віднімання її правильність визначається типом операндів (знакові-беззнакові) і станом прапорів CF і OF. Помилка може призводити до генерації виключення, або ігноруватися (деталі реалізації опускаю, скажу лише що в Delphi за це відповідають директиви компілятора $ Q і $ R, а також пташки "Overflow checking" і "Range checking" на вкладці "Compiler" в опціях проекту ).

При множенні для знакових і беззнакових чисел використовуються різні машинні команди і там результат контролюється інакше, а при діленні переповнення просто виключено.

А тепер - наступне завдання (№ 2). Термін виконання - 3 тижні, потім підемо далі. Майте на увазі - завдання велике і відповідальне (тому й термін досить великий), так що розслаблятися ніколи.

1. За книгами або за Хелп (див. "Integer types") розібратися з УСІМА цілими типами Delphi (а їх всього 9). Твердо пам'ятати, які з них знакові, а які - беззнакові, який їхній розмір в пам'яті і діапазон можливих значень. Розібратися з функціями SizeOf, Low, High, Succ, Pred, Inc і Dec. Усвідомити, що при обчисленні змішаних арифметичних виразів (з операндами різних типів) молодші типи можуть наводитися до старших. Знати все цілочисельні операції, включаючи Div і Mod (див. В хелпе "Arithmetic operators") і розуміти різницю між унарними (одномісними) і бінарними (двомісними) операціями "+" і "-". Раз і назавжди запам'ятати, що операції "плюс" і OR - це не одне і те ж (5 + 1 = 6, а 5 or 1 = 5, хоча 4 + 2 = 6 і 4 or 2 = 6). Вивчити старшинство (пріоритет) операцій над цілими числами (див. "Operator precedence" в хелпе).

2. Відкрити текст модуля Windows.pas і подивитися відповідність вбудованих типів Delphi типам UCHAR, SHORT, DWORD, UINT, ULONG, LONGLONG, а також THandle, HWND, HHOOK, HMODULE, HINST і інші "H". Зрозуміти систему найменувань ( "U" означає "unsigned" - беззнаковий, а "H" означає "Handle"). Засвоїти, що все "хендлом" - це просто-напросто беззнакові 4-х байтові цілі.

УВАГА: типи, що починаються з літери "P" або значка "^" поки навіть і не намагайтеся розглядати !!! Ні в якому разі!!!

3. Відкрити модуль Messages.pas і подивитися, що з себе представляють константи WM_xxx. Це і є знамениті повідомлення Windows - а вони всього лише числа, виявляється.

4. За посиланнями з завдання № 1 розібратися з двійковій кодуванням чисел з плаваючою точкою (речових). Зрозуміти, що в пам'яті вони зберігаються у вигляді "наукової" нотації (мантиса-експонента), що в більшості випадків ці числа округлюються і чому це так. За книгами або Хелп (див. "Real types") розібратися з речовими типами Delphi, знати розмір в пам'яті, дипазон і точність кожного типу, а також особливості Comp і Currency. Подивитися типи TDate, TTime і TDateTime і запам'ятати, що це по суті той же самий Double. Подивитися всі функції з розділу "Arithmetic routines" в хелпе. Знати директиву компілятора $ REALCOMPATIBILITY.

5. Зайти на "Королівство Delphi" (http://www.delphikingdom.com) в розділ "Hello, world!", А там знайти статтю Антона Григор'єва "Неочевидні особливості дійсних чисел" і найуважнішим чином її ВИВЧИТИ і ЗРОЗУМІТИ (це ДУЖЕ важливо, інакше можете потім натрапити на купу підводних каменів). Знати, що таке машинний нуль і машинне епсилон, коли і як виникає зникнення порядку, що таке Underflow. Розуміти, що для вешественних чисел перевірка if X = Y може не спрацювати і чому.

Успіхів!



Юрий Зотов   (2002-10-28 23:21) [2]

PS
Етап 1 см. Тут:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035226023&n=3



Юрий Зотов   (2002-10-29 11:38) [3]

1. Up.
2. Нагадую прохання до всіх - НЕ засмічувати цю гілку речами, безпосередньо до неї не відносяться. Для думок, побажань та ін. Використовуйте інші гілки, please.



Юрий Зотов   (2002-10-29 23:47) [4]

Народ, не чути реакції. Це ще кому-небудь потрібно? Приступили до виконання 2-го завдання, або як?



Malder   (2002-10-30 00:06) [5]

стаття Антона Григор'єва "Неочевидні особливості дійсних чисел http://www.delphikingdom.com/helloworld/reals.htm



Neox   (2002-10-30 00:16) [6]

Приступаємо до виконання :)
Дякую Юрію Зотову за терпіння і бажання вчити!



al_   (2002-10-30 00:51) [7]

Закінчую перше і з четверга зможу приступити до другого етапу. Приємно що ми ще комусь потрібні =) Якщо можна, трішки більше часу виділяти для роботи над етапом. А то робота ще, блін.



RV   (2002-10-30 08:50) [8]

al_ © (30.10.02 00:51)
А то робота ще, блін.

Згоден.
Я, наприклад, тільки по суботах і неділях можу дивитися :(
Пропоную черговий етап робити раз на тиждень, хоча можна і частіше, як народ скаже.



lipskiy   (2002-10-30 23:45) [9]

Весь останній матеріал викладений на http://delphi.adlen.ru



Dmk   (2002-10-30 23:52) [10]

Цікаво :) Дякую. Вирішив приєднатися.
Повторити ніколи не завадить.



DeMoN-777   (2002-10-31 12:28) [11]

Юрій величезна Вам спасибі, весь свій вільний час приділяю процесу навчання. Важкувато починати з нуля = (, адже я й гадки не мав про такий числах =).
Навчається, вчиться і еше раз вчиться. Намагаюся не ставити запитань і сам намагаюся в усі в'їхати.

> Lipskiy © (30.10.02 23: 45)
Для інтересу постав на титулки сайту лічильник.

> ALL
Вибачте що "злегка засмітили" таку інформаційну гілку.



F1   (2002-10-31 12:48) [12]

Приєднуюся до навчання! Дякую Юрію Зотову за це все.
А то сам би не здогадався з цим покопатися :-)



Юрий Зотов   (2002-10-31 13:14) [13]

> DeMoN-777 and All

> Намагаюся не ставити запитань і сам намагаюся в усі в'їхати.

Це правильно (інакше яка ж навчання?), АЛЕ: Якщо щось все ж не виходить або залишається незрозумілим - ОБОВ'ЯЗКОВО задавайте питання.

Це потрібно і Вам (щоб не залишалося пропусків, вони потім обов'язково позначаться), і мені (щоб відстежувати зворотний зв'язок і мати можливість коригувати процес), і іншим (бо у них, швидше за все, виникли ті ж питання).

АЛЕ: Як ми і домовлялися - питання після 10-ї спроби в'їхати самостійно. Інакше це і правда не навчання, а прогулянка.



Юрий Зотов   (2002-10-31 13:17) [14]

> Lipskiy © (30.10.02 23: 45)

Tnx. Приступив до продовження листи (швидше за все, відішлю у вихідні). Прошу по можливості прискорити інтерактив.



Malder   (2002-11-02 10:14) [15]

UP чи



DeMoN-777   (2002-11-06 23:59) [16]

Не дам померти гілці.



Pascal's programmer   (2002-11-07 01:48) [17]


> Malder © (02.11.02 10: 14)
> UP чи
>
>
> DeMoN-777 © (06.11.02 23: 59)
> Не дам померти гілці.

а навіщо такі складнощі? Хіба важко цю гілку в букмарки (CTRL + D) додати?



Ru   (2002-11-07 18:34) [18]

Якщо підійде словесне доказ:
1

10-тичная | 2-кова | 16-тиричном |
==================================== |
число | номер | число | номер | число | номер |
==================================== |
0 | 1 | 0 | 1 | 0 | 1
1 | 2 | 1 | 10 | 1 | 2
2 | 3 | | 2 | 3
3 | 4 | | 3 | 4
4 | 5 | | 4 | 5
5 | 6 | | 5 | 6
6 | 7 | | 6 | 7
7 | 8 | | 7 | 8
8 | 9 | | 8 | 9
9 | 10 | | 9 | a
| A | b
| B | c
| C | d
| D | e
| E | f
| F | 10



StAL   (2002-11-07 21:48) [19]

Хотілося-б приєднається.
Почав читати статті, але перед цим прочитав всі гілки, які стосуються навчання.
Мені тільки 15 років, і я не знаю, чи варто мені братися за це?
Начебто-б серед однолітків я єдиний відмінник з інформатики, мене запрошують на олімпіади, але серед Вас, я - ніхто.
Будь ласка, порадьте що-небудь.
До речі щодо LParam, у мене дійсно вийшло розібратися!
А раніше я просто тупо скачував це з FAQ
Спасибі всім, і, особливо, Юрію Зотову.
С ув. Олексій



Pascal's programmer   (2002-11-07 23:31) [20]


> StAL © (07.11.02 21:48)


> Але серед Вас, я - ніхто.

Та НУ? А мені значить 15 років і я теж ніхто? Хлопець, до чого тут вік? Я в форумі 18-22 річним "куль програмістам" на дурні питання тут задолбался відповідати вже!
+ Ти ж береш участь у всяких там олімпіадах (і щось примудряється зайняти), а це вже дуууже добре !!!



StAL   (2002-11-08 10:02) [21]


> Pascal "s programmer © (07.11.02 23:31)

Ну дякую. Тоді, значить, я приєднуюся.
Юрій Зотов, спасибі за прекрасну ідею!
С ув. Олексій



Николай Быков   (2002-11-08 10:11) [22]


> StAL © (08.11.02 10:02)

Знав би ти чия це ідея була ;-)
Юрій Зотов тільки погодився задовольнити прохання, за що йому спасибі



Юрий Зотов   (2002-11-08 12:37) [23]

> Мені тільки 15 років, і я не знаю, чи варто мені братися за це?

Якщо є інтерес і бажання, то варто. 15 років - це старші класи школи. Вік і знання цілком достатні. Хоча грамотний програміст, по ідеї, мав би знати і чисельні методи, які вивчають у ВНЗ. Але це вже потім, як то кажуть.



PaRL   (2002-11-10 18:26) [24]

У мене питання про числа з плаваючою крапкою.

"Зберігається порядок = істинний порядок + зміщення"

Я не розумію навіщо зміщення, якщо можна зберігати просто порядок в двійковому вигляді.



Marser   (2002-11-10 21:36) [25]

> Юрій Зотов

А чи не простіше викласти в розділ "статті"?



StAL   (2002-11-11 15:26) [26]

У мене виникло питання щодо п'ятого завдання.
До 56ЕС доходжу, а далі ...
а). 56EC and 880 не дорівнює нулю - значить, або 7-й, або 11-й біт, або обидва разом встановлені. - Звідки 880 ???
б). 56EC and 880 не дорівнює 880 - значить, 7-й і 11-й біти одночасно НЕ встановлені. - Чому ???
в). 56EC or 1010 and not 2108 (отримаємо 56F4) Звідки 1010 і 2108 ???
г). 56EC shr 8 - дає старший байт (дорівнює 56) -Це начебто зрозуміло
56EC and FF - дає молодший байт (дорівнює EC)
Це вже після 100 спроби розібратися.
Нічого не розумію.
Підкажіть будь ласка.
С ув. Олексій
ЗИ
2 Юрій Зотов
> Якщо є інтерес і бажання, то варто.
ВЕЛИКИЙ Інтерес і бажання Є !!!!
Спасибі вам велике!



StAL   (2002-11-11 15:35) [27]

І з завданням 2 щось ніяк.
Може я тупий, але прочитавши статті, я все зрозумів крім цього (2 і 5)
Спасибі вам.



Юрий Зотов   (2002-11-12 10:26) [28]

> StAL

Завдання 2.

Нехай у нас є 2-ве число, що складається з N одиниць:
111 ... 1

Додавши до нього одиницю, отримаємо число, що складається з одиниці і N нулів:
1000 ... 0

Якщо сітка обмежена N розрядами, то старший біт в неї не поміщається і залишається просто N нулів - що означає нуль.

Отже, ми до якогось число додали одиницю і отримали нуль. Значить, початкове число дорівнювало -1. Висновок: в N-розрядному додатковому коді число -1 записується у вигляді N одиниць при будь-якому N.


Завдання 5.

Якщо через Х позначити довільне стан біта (0 чи 1), то легко переконатися, що:
X or 1 - завжди 1
X and 0 - завжди 0
X and 1 - завжди X

Ця табличка використовується для перевірки і установки станів біт. Нехай у нас є двійкове число XXXXXXXX і потрібно перевірити, чи встановлений в ньому біт 2 або 7 (тобто, дорівнює чи хоча б один з них 1). Провівши операцію AND з числом 10000100 (міський), отримаємо X0000X00. Якщо результат дорівнює нулю, то обидва біта нульові, якщо немає - то хоча б один з них одиничний. Далі, якщо цей же результат дорівнює самій масці, то обидва біта поодинокі, а якщо ні - то хоча б один з них нульовий.

У завданні потрібно було перевірити 7-й і 11-й біти. Значить, наша маска повинна бути записана як 0000100010000000 (або 880 в 16-ном вигляді).

Для установки 4-го і 12-й біти потрібно зробити операцію OR з маскою 0001000000010000, а для скидання 3-го, 8-го та 13-й бита - операцію AND з маскою (NOT 0010000100001000). Ці числа і є 1010 і 2108 в 16-ном вигляді.

Ось така підказка. Спробуйте розібратися в завданні ще раз, якщо не вийде - питайте.




al_   (2002-11-12 20:44) [29]

Ось мої дії:
1ABC, 9D (hex) -> 0001 (1) 1010 (A) 1011 (B) 1100 (C), 1001 (9) 1101 (D) (bin)
цілу частину розбиваю на тріади для перекладу в вісімкову з права наліво. А як розбивати дробову частину на тріади справа наліво або навпаки?
і щось не виходить у мене ось ці 2 операції $ B, 92 - $ D, 11 і 1110,11 (b) - 10001 (b) звідки позику брати? :(
5. Дайте ссилочку по унарним і бінарним опцій, а то всюди на С ++ натикаюся! :(



StAL   (2002-11-14 18:04) [30]

Спасибі!
З 5-тим розібрався повністю. Вирішив ще 10 завдань такого типу.
Навіть якось радісно стало!

> al_
І у мене таке питання.
Як переводити з 16тірічной в 2ічную дроби?
Ще раз дякую!
З ув.Алексей
PS
До речі, хто встиг завантажити Лекцію99. Там зараз 404 не знайдено.
Може вистелете? mailto: stalcom@ua.fm
спасибі заздалегідь



al_   (2002-11-15 03:00) [31]


> StAL © (14.11.02 18:04)


Пішло на мило, щоб не засмічувати гілку.



Юрий Зотов   (2002-11-15 08:20) [32]

Інформація для всіх.

Для ЦІЛИХ чисел ДУЖЕ важливо розуміти їх 2-ву (16-ву) кодування, вміти робити переклад з системи в систему, знати прямий, зворотний і додатковий коди, вміти виставляти і перевіряти окремі біти, розуміти знакову / беззнакову інтерпретацію і т.д.

Для речових же чисел досить мати лише загальне уявлення про ці речі. Зате для них треба чітко знати наукову нотацію і розуміти особливості машинної арифметики. Тому не варто сильно захоплюватися перекладом дійсних чисел із системи в систему, набагато важливіше чітко засвоїти те, про що пише в своїй статті Антон Григор'єв (посилання див. У завданні).

Приблизно через тиждень припускаю видати контрольні питання по речовим числах і нове завдання. Чи встигаєте?



RV   (2002-11-15 08:40) [33]


> Чи встигаєте?

я так.

СПАСИБО



onix   (2002-11-15 10:36) [34]

Встигаю.

Спасибо.



al_   (2002-11-15 22:41) [35]


> Чи встигаєте?

Не зовсім. Ще б трошки часу! Якби ще й ссилочек побільше!



cypher   (2002-11-15 23:11) [36]

Пропоную ще одну класику, малесеньку прогу ...
тим хто знає мовчати, а то не цікаво.

отже, вивести введену користувачем послідовність чисел навпаки, тобто запускаємо прогу .. вводимо a1, a2, a3 ... aN потім говоримо, що все, набридло, і програма виводить aN, a (N-1) ... a2, a1. Причому НЕ ВИКОРИСТОВУВАТИ МАСИВ.



cypher   (2002-11-15 23:13) [37]

на обдумування 3 хвилини, не встигли, Вам мінус! =)



Aristarh   (2002-11-15 23:20) [38]

Не зовсім зрозуміле питання і умови. Але можна заганяти числа в рядок string, розділяючи їх пропуском. При уточненні буде інший варіант.

А на рахунок 3-х хвилин даремно. Не обов'язково людина прочитає відразу або коннект поганий



cypher   (2002-11-15 23:21) [39]

прочитав, усвідомив ... є три хвилини.
варіант рядка - поганий, це вже не числа, а потім рядок - той же масив =)



Aristarh   (2002-11-15 23:24) [40]

> Cypher © (15.11.02 23:21)

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



сторінки: 1 2 вся гілка

Форум: "пошарпану";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вгору





Пам'ять: 0.75 MB
Час: 0.061 c
1-74732
trotski
2002-12-14 08:40
2002.12.23
Чи не знайшов в FAQ


8-74858
SaschaN
2002-09-07 13:00
2002.12.23
Зробити mp3.


4-75042
Космічні
2002-11-09 19:00
2002.12.23
Як поміняти скрінсейвер?


1-74645
Фелікс
2002-12-12 18:30
2002.12.23
Ttreeview?


1-74835
Fantom
2002-12-12 08:54
2002.12.23
RichEdit як встановити позицію курсора?





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська