Newsgroup: it.comp.lang.pascal
Titolo: p to p to char vs array of char 2

Ciao.
 
Ho importato una libreria in C dove viene dichiarato un tipo di 
puntatori a puntatori
dove si sa che e' possibile accedervi anche in modalita' array cioe'
 
char ** var
 
var[0], var[1] ecc... (tipo args ptop di stringhe passate da linea 
comandi)
 
In pascal, come faccio a dichiarare la stessa cosa ?
Cioe' se una funzione importata mi ritorna un puntatore di questo tipo
(char **)
come accedo alle varie stringhe in pascal ?
 
Spero di essermi spiegato ;)
 
--
Bye bye....
 
ne...@tvol.it
 
szn...@usa.net
***************************
* Team Os/2 Italia member *
***************************
My Dream ? PROTECTONLY=YES !
HOMEPage : 
http://delenda.biella.alpcom.it/zamprogno/
ICQ UIN  : 4708891
HAL-9000: "What are you doing with those Windo$e disks Dave? Dave?
DAVE!!!!!
S.E.T.I Project supporter

come accedo alle varie stringhe in pascal ?
Se usi il Turbo Pascal potresti scrivere :
type PString = ^string;
        PArray = array[1..50] of Pstring;
        PPString = ^PArray; 
Il valore di ritorno viene messo in PPString e si accede alle stringhe
tramite PPString^.PArray^[i]
Non so se e' il codice giusto dato che non posso testarlo.
 
Andrea
------------------------------------------------
combatti anche tu il nano scemo :
http://www.geocities.com/Hollywood/Studio/6989
------------------------------------------------

         PArray = array[1..50] of Pstring;
Il prob. e' qui, io NON so a priori quante stringhe mi verranno 
passate....


passate....
Non e' importante, puoi scriverci anche 3000 al posto di 50.
L'importante e' che, al momento di accedere agli elementi tu sappia
qual'e' il numero massimo di essi.
D'altronde e' cosi' anche per il C.
Tieni pero' presente che le "stringhe" del C, che poi stringhe non
sono, sono del tipo ASCIIZ, cioe' hanno il byte 0 alla fine del testo.
Mentre quelle del Pascal, hanno il primo byte che in valore ASCII ne
rappresenta la lunghezza. 
Quindi devi usare una funzione di conversione da ASCIIZ al formato
pascal prima di usarle.
--------------------------------------------------------
Andrea      
mica uno qualunque...
--------------------------------------------------------

 pascal prima di usarle.
Quindi se ad esempio le stringhe sono 3010, io potrei (anche se ho 
dichiarato un array di 50 stringhe)
accedere alla 3009vesima stringa cosi :
writeln(PArray^^[3009] );
?


accedere alla 3009vesima stringa cosi :
No, attenzione :
Io ho dichiarato un puntatore a un array di 50 *puntatori* stringhe.
Cioe' ho scritto :
type PString = ^string;
        StringArray = array[1..50] of Pstring;
var   PStringArray = ^StringArray;
Ed e' PStringArray che viene effettivamente utilizzato.
Se dichiari 50 stringhe non puoi accedere alla numero 3009 perche' sei
fuori limite.
Io volevo dire che, dato che non sai quante stringhe ti vengono
passate, spara un numero a caso (io ho messo 50, ma puoi mettere 1000)
in modo che, anche se fossero di meno, ti trovi bene lo stesso.
L'importante e' che se le stringhe che vengono passate (e devi sapere
quante sono al momento che usi l'array) sono 30, e' bene che tu non
acceda alla 31esima....capisci ?
E comunque devi adottare una sintassi del tipo :
PStringArray^.StringArray^[23]
(non ricordo se la sintassi e' PStringArray^.StringArray[23]^);
Se usi il Dephi, dovresti trovare una funzione predefinita che
converte le stringhe dal formato ASCIIZ (quello usato in C) al formato
Pascal.


Pascal.
Le stringhe ASCIIZ sono le stringhe terminanti per zero? Se sì, anche
il Pascal lo fa! StrPas in un verso, StrPCopy nell'altro (unità
Strings).
Ciao,
DjM / Digital Things
aka Mauro Molinari
Internet e-mail: 
djm...@geocities.com
 / 
djm...@mail.geocities.com
Digital Things Home Page:
=> 
http://www.musicnation.com/home/digital_things
=> 
http://www.geocities.com//SiliconValley/Bay/8251
=> 
http://members.tripod.com/~DjM_DiT
=> 
http://space.tin.it/musica/gvettora
*** To send me an e-mail, select the right address.
*** Per mandarmi una e-mail, scegli l'indirizzo corretto.

Strings).
Precisazione : stai parlando dell'object pascal (il Delphi per intenderci), non
del pascal. :-)
--------------------------------------------------------
Andrea      
===========================================================================
Altro che sconti Telecom ! fatevi un bel panino con la Nutella...
---------------------------------------------------------------------------
Ti ho messo la maionese ! ti ho messo il chectch ? che vuoi di piu' ?
---------------------------------------------------------------------------
per le risposte via e-mail togli CHITIHACHIESTONIENTE!!!! dal mio indirizzo
---------------------------------------------------------------------------
ICQ# 8143647
---------------------------------------------------------------------------

del pascal. :-)
Torno a ripetere che se per ASCIIZ intendi le stringhe terminanti per
zero (i PChar), anche Turbo Pascal 7.0 e Borland Pascal 7.0 le
supportano, fornendo pure le funzioni summenzionati nell'unità
Strings.
Ciao,
Mauro Molinari
(Pascal programmer & musician)
Internet e-mail: 
maur...@tin.it
 / 
maur...@mbox.vol.it
Digital Things Home Page: 
=> 
http://www.geocities.com/SiliconValley/Bay/8251
=> 
http://space.tin.it/musica/gvettora
=> 
http://members.tripod.com/~DjM_DiT
=> 
http://www.musicnation.com/home/digital_things


Strings.
Si Si hai ragione ;-) ! in realta' non pensavo al Pascal 7 ma al Pascal normale
ehehhe :)
Chiedo scusa...
Andrea      
(per le risposte via e-mail togli CHITIHACHIESTONIENTE!!!! dal mio indirizzo)
ICQ# 8328956