Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 06:38

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Доступные логические диски в Windows
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
Alexander
Считай как интерпретатор - BL WORD :)
Сообщение Добавлено: Пт июн 13, 2008 22:05
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
Похоже это минимум - 13 слов.
Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

: LOG-DISKS:  100 ALLOCATE THROW DUP 100 GetLogicalDriveStringsA TYPE ;

А чего-то 5 насчитал ALLOCATE THROW DUP GetLogicalDriveStringsA TYPE и 6 само определение
Сообщение Добавлено: Пт июн 13, 2008 16:35
  Заголовок сообщения:   Ответить с цитатой
Похоже это минимум - 13 слов.
Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

: LOG-DISKS:  100 ALLOCATE THROW DUP 100 GetLogicalDriveStringsA TYPE ;
Сообщение Добавлено: Ср июн 11, 2008 16:08
  Заголовок сообщения:   Ответить с цитатой
А если еще вдруг вспомнить, что EMIT это 1 TYPE, и есть слово TUCK, то вообще 14-ти хватит:

Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

: LOG-DISKS:
100 DUP ALLOCATE THROW TUCK SWAP
GetLogicalDriveStringsA TYPE ;
Сообщение Добавлено: Ср июн 11, 2008 13:05
  Заголовок сообщения:   Ответить с цитатой
Ну без украшательств только 22 слова будет :)

Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

: LOG-DISKS:
100 DUP ALLOCATE THROW DUP -ROT SWAP  GetLogicalDriveStringsA
OVER + SWAP  DO I C@ EMIT LOOP ;
Сообщение Добавлено: Ср июн 11, 2008 11:42
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

0 VALUE a-buff 0 VALUE len-buff
100 DUP ALLOCATE THROW DUP -ROT SWAP
GetLogicalDriveStringsA TO len-buff TO a-buff

: LOG-DISKS.
a-buff len-buff + a-buff
DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;

LOG-DISKS.

41 слово
Сообщение Добавлено: Ср июн 11, 2008 11:01
  Заголовок сообщения:   Ответить с цитатой
То же самое без глобальных переменных

Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

: LOG-DISKS:
LATEST ID. SPACE
100 DUP ALLOCATE THROW DUP -ROT SWAP
GetLogicalDriveStringsA OVER + SWAP
DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;

\ EOF
LOG-DISKS:
Сообщение Добавлено: Ср июн 11, 2008 10:41
  Заголовок сообщения:   Ответить с цитатой
Pretorian писал(а):
Но тут больше требуется алгоритм вывода на консоль построчно из списка. Апи дана, что бы не строить самим список строк.

Тут вывод из буфера проще по EMIT сделать.
Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

0 VALUE a-buff 0 VALUE len-buff
100 DUP ALLOCATE THROW DUP -ROT SWAP
GetLogicalDriveStringsA TO len-buff TO a-buff

: LOG-DISKS.
." LOG-DISKS: "
a-buff len-buff + a-buff
DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;

\EOF
LOG-DISKS.
Сообщение Добавлено: Ср июн 11, 2008 09:37
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
Pretorian писал(а):
Задача конкурса: самый минимальный код в словах
прямо из консоли :D ...

:shock: Да-а-а... :dmad; Маг калданул - все атдыхають!
Сообщение Добавлено: Ср июн 11, 2008 09:34
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
прямо из консоли :D
Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
1000 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA DUMP

Хитрый ход однако. Но тут больше требуется алгоритм вывода на консоль построчно из списка. Апи дана, что бы не строить самим список строк.
Это мое первое ТЗ для конкурса, так что я не был готов к таким хитрым моментам.
Сообщение Добавлено: Ср июн 11, 2008 08:55
  Заголовок сообщения:   Ответить с цитатой
Pretorian писал(а):
Показать на консоли список логических дисков доступных в текущий момент.

прямо из консоли :D
Код:
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
1000 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA DUMP

32A664   41 3A 5C 00  43 3A 5C 00  44 3A 5C 00  45 3A 5C 00 A:\.C:\.D:\.E:\.
32A674   46 3A 5C 00  47 3A 5C 00  48 3A 5C 00  00 00 00 00 F:\.G:\.H:\.....
Ok
Сообщение Добавлено: Ср июн 11, 2008 08:39
  Заголовок сообщения:  Доступные логические диски в Windows  Ответить с цитатой
Показать на консоли список логических дисков доступных в текущий момент. Задача конкурса: самый минимальный код в словах (использовать для буфера только кучу, убивая данные в конце задачи). Код для SPF.

Что бы не лезть в MSDN.
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL

( длинна_буфера адрес_буфера -> количество_скопированных_символов|0 )
Буфер будет содержать список строк, каждая строка оканчивается нулем, конец всех строк так же ограничена 0. Пример: Str1 0 Str2 0 Str3 0 0

З.Ы. Либы не подключать иначе буду считать определения слов так же.
Сообщение Добавлено: Ср июн 11, 2008 07:37

Часовой пояс: UTC + 3 часа [ Летнее время ]


cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB