Forth
http://fforum.winglion.ru/

findfirst на spf
http://fforum.winglion.ru/viewtopic.php?f=18&t=2738
Страница 1 из 1

Автор:  Cocain [ Пн июн 27, 2011 12:01 ]
Заголовок сообщения:  findfirst на spf

Всем привет! Подскажите, как вызвать findfirst на spf? Ибусь два дня уже...

И еще вопрос. Позволяет ли форт писать с ассемблерскими вставками?


M Первое китайское предупреждение. Еще один мат в любом из сообщений, и будет перманентный бан.
Читайте правила.
Злой Админ


Автор:  Mihail [ Пн июн 27, 2011 14:11 ]
Заголовок сообщения:  Re: findfirst на spf

Cocain писал(а):
одскажите, как вызвать findfirst

Я сделал печать директории. Почему-то на spf.sf.net не закоммитить.
Кидаю сюда
Код:
REQUIRE { ~mak\locals4.f
REQUIRE /WIN32_FIND_DATA ~ac\lib\win\file\findfile.f
REQUIRE [IFNDEF] ~nn\lib\ifdef.f
REQUIRE $! ~mak\place.f
[IFNDEF] BREAK : BREAK POSTPONE EXIT POSTPONE THEN ; IMMEDIATE [THEN]


CREATE WIN32_FIND_DATA /WIN32_FIND_DATA ALLOT
CREATE TP_DIR  0x101 ALLOT

0 VALUE FIND-ID

: FIRSTFILE ( addr len  -- FLG )
CR ." FIRSTFILE=" 2DUP TYPE CR
  TP_DIR $!
0  TP_DIR COUNT + C!
FIND-ID IF  FIND-ID FindClose DROP THEN
WIN32_FIND_DATA TP_DIR 1+ FindFirstFileA DUP TO FIND-ID
-1 = ;

: NEXTFILE ( -- flg )
WIN32_FIND_DATA FIND-ID  FindNextFileA  ;

: GET-DIR-FILE-NAME ( -- addr len )
WIN32_FIND_DATA cFileName ASCIIZ> ;

: GET-DIR-ATTR ( -- u )
  WIN32_FIND_DATA  dwFileAttributes @ ;

0x10 CONSTANT isdir        \ dir ?

: GET-DIR-SIZE ( -- u )
  WIN32_FIND_DATA  nFileSizeLow @ ;

: DIR.
  GET-DIR-FILE-NAME TYPE
  GET-DIR-ATTR isdir AND IF  9 EMIT ." <DIR>" THEN
  CR ;

: *DIR
  TP_DIR $!
S" \*.*"  TP_DIR $+!
TP_DIR COUNT
  FIRSTFILE IF BREAK
  0
  BEGIN  DIR.
  1+ DUP 0xF AND 0=
  IF   CR ." q - exit"
   KEY 0x20 OR [CHAR] q = IF DROP EXIT THEN
  THEN
  NEXTFILE 0=
  UNTIL DROP
;

: DIR   PARSE-NAME *DIR ;


Cocain писал(а):
Позволяет ли форт писать с ассемблерскими вставками?

http://spf.cvs.sourceforge.net/viewvc/spf/devel/~yz/lib/filename.f?view=log
http://spf.cvs.sourceforge.net/viewvc/spf/devel/~mak/WAPI.F?view=log

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/