Newsgroup: it.comp.lang.pascal
Titolo: Due domandine da un newbie

Sono appena entrato in questo NG e vi assillo con due domandine spero
molto facili:
1) dove posso reperire il Borland Pascal? Non che mi interessi la
programmazione in Object Pascal su Windows (ho gia' il compilatore C++
ed OWL per questo), ma mi interessa programmare in Turbo Pascal per
DOS con il DOS Extender presente nel Borland Pascal. Anche se spero
che il DOS Extender abbia la capacita' di gestire piu' di 16 Megabyte
di RAM.
2) avete per caso mai affrontato la possibilita' di gestire i nomi
lunghi dei file di Win95 e Win98 sotto il DOS, cioe' vi sono librerie
in Turbo Pascal che gestiscono i nomi lunghi nei programmi costruiti
con il Turbo Pascal?
Vi ringrazio in anticipo.
Bye.
Jo Parrello - OWL/C++ Programmer
http://www.geocities.com/SiliconValley/Hills/8145
(
jopar...@geocities.com
)

Un bel di' Joseph "Shagged-Off" Parrello scrisse:
JSOP> 2) avete per caso mai affrontato la possibilita' di gestire i nomi
JSOP> lunghi dei file di Win95 e Win98 sotto il DOS, cioe' vi sono librerie
JSOP> in Turbo Pascal che gestiscono i nomi lunghi nei programmi costruiti
JSOP> con il Turbo Pascal?
JSOP> 
ne dubito, in quanto il DOS non prevede i nomi lunghi, il Turbo Pascal
e' per DOS, se ne deduce che il Turbo Pascal non prevede i nomi lunghi :-)
Ciao!
-- 
"1. Se si tiene qualcosa abbastanza a lungo lo si potra' buttare
 2. Qualsiasi cosa si butti, servira' non appena non sara' piu'
disponibile", leggi complementari di Richard sulla proprieta'
-- 
Emanuele Cesena
em...@iol.it
          occhio all'antispam NOSPAM!
http://www.geocities.com/SiliconValley/Grid/8879

JSOP> con il Turbo Pascal?
Le librerie ci sono.
Si puo' fare andando a sovrascrivere le routine findfirst, findnext, con le
nuove funzioni $714E e $714F dell'int 21h.
Il buffer di ricerca restituito contiene sia lo "short name" che il "long name".
Skyscraper (apprezzatelo adesso : eviterete la coda)
----------------------------------------------------
 
andrea_...@bigfoot.com
----------------------------------------------------
--
Posted from 
itaca.ulysse.it
 [195.223.254.1]
via Mailgate.ORG Server - 
http://www.mailgate.org

nuove funzioni $714E e $714F dell'int 21h.
Beh, non sono solo queste le funzioni sui nomi lunghi dei file. Se
volete, quando avro' il compilatore, vedremo di implementare tutte le
funzioni attualmente disponibili sui nomi lunghi.
Bye.
Jo.

Beh, non sono solo queste le funzioni sui nomi lunghi dei file.
Infatti, le routine sono tutte quelle dell'int 21h funzione 71h.
Sono le seguenti :
AX = 710Dh  reset drive
AX = 7139h  create directory
AX = 713Bh  remove directory
AX = 7141h  set current directory
AX = 7143h  delete file
AX = 7147h  get/set file attributes
AX = 714Eh  get current directory
AX = 714Fh  find first file
AX = 7156h  find next file
AX = 7160h  move (rename file)
AX = 716Ch  truename
AX = 71A0h  get volume information
AX = 71A1h  terminate find first/find next
AX = 71A6h  get file information
AX = 71A7h  time conversion
AX = 71A8h  generate short filename
AX = 71A9h  server create/open file
AX = 71AAh  create/terminate SUBST


Sono le seguenti :
[CUT]
Posto le informazioni prendendole dalla Interrupt List di R.Brown
aggiornata all'inizio del '99 (versione 6.0) poiche' alcune cose da te
dette non sembrano veritiere (almeno stando a quanto scritto qui
sotto):
710D = RESET DRIVE
7139 = MAKE DIRECTORY
713A = REMOVE DIRECTORY
713B = CHANGE DIRECTORY
7141 = DELETE FILE
7143 = EXTENDED GET/SET FILE ATTRIBUTES
7147 = GET CURRENT DIRECTORY
714E = FIND FIRST MATCHING FILE
714F = FIND NEXT MATCHING FILE
7156 = RENAME FILE
7160 = CANONICALIZE PATH
7160 = GET SHORT (8.3) FILENAME FOR FILE
7160 = GET CANONICAL LONG FILENAME OR PATH
716C = CREATE OR OPEN FILE
71A0 = GET VOLUME INFORMATION
71A1 = "FindClose" - TERMINATE DIRECTORY SEARCH
71A6 = GET FILE INFO BY HANDLE
71A7 = FILE TIME TO DOS TIME
71A7 = DOS TIME TO FILE TIME
71A8 = GENERATE SHORT FILENAME
71A9 = SERVER CREATE OR OPEN FILE
71AA = CREATE SUBST
71AA = TERMINATE SUBST
71AA = QUERY SUBST
A livello Turbo Pascal penso che il limite dei 256 caratteri di una
stringa sia da superare poiche' un nome di file lungo completo di
percorso in Win95 raggiunge il massimo di 260 caratteri. Inoltre le
stringhe standard del Pascal non vanno per niente bene, poiche' tutte
le funzioni suddette dell'INT 21 supportano SOLTANTO le stringhe
terminanti con il byte null, tipiche del C e del C++. Spero che il
Turbo Pascal abbia un supporto completo per tali stringhe (se non erro
tramite la unit strings) altrimenti la cosa e' improponibile (a meno
che ogni funzione assembler non vada a convertire il tipo di stringa).


(a meno che ogni funzione assembler non vada a convertire il tipo di stringa).
A che servirebbe convertirla se il TP si ferma a 256 caratteri ?
La cosa si risolve semplicemente scrivendo una routine di scrittura adatta alle
stringhe ASCIIZ.
