Newsgroup: it.comp.lang.c++
Titolo: E lo standard?!?!?

Ciao a tutti...
mi chiedevo: ma perché il C++ è così terribilmente arlecchino, ognuno
(MS, Borland, ecc.) si sviluppa le proprie cose possibilimente
incompatibilmente con tutto il resto?
ad esempio, abbiamo nella libreria standard la classe string, perché
Borland deve usare AnsiString (e MS CString)? e soprattutto perché non
permette il casting diretto tra queste due classi? vabé, questa è una
scemenza, basta castare in char* e poi ricastare nell'altra classe,
però...
ieri ho scoperto che non si possono usare i tipi della libreria
standard come tipi restituiti dalle funzioni di una DLL e così string
non lo posso utilizzare!!!
e ancora, perché borland usa TStringList se potrebbe usare
tranquillamente vector<AnsiString>? o per lo meno permettere la
scelta?
i miei programmi, non so i vostri, sembrano veramente arlecchino, in
qualche unit funziona con VCL (AnsiString, TStringList e compagnia),
in altre con std (string, vector, ecc.)
e gli standard che ci stanno a fare?!?
-- 
]\/[ad]\/[age
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

in altre con std (string, vector, ecc.)
Generalmente sarebbe meglio dividere la parte portabile (in cui usi
std::string) e la parte con MFC/VCL in cui usi CString e AnsiString.
-- 
                    Marco Barisione (ICQ 84277092)
Se sei interessato alla creazione di it.comp.lang (per i linguaggi di
programmazione senza un gruppo apposito e per i confronti fra i
linguaggi) partecipa alla discussione sul manifesto su it.news.gruppi.

scelta?
Perché la Borland tenta di imporre le proprie tecnologie a discapito
dello standard.
Cio non vuol dire che un programma che usa VCL o MFC non possa essere
standard al 99% delle sue caratteristiche.
Tutto sta nel modo con cui un software é progettato.
Il Ghenio
-----
These are my parting words to you:
those who give up are doomed!
-----

 incompatibilmente con tutto il resto?
principalmente le cause sono due:
1) alcune case produttrici hanno interesse a legare il piu' possibile 
gli utenti ai loro prodotti; il fatto di non rispettare gli standard le 
agevola in questo intento.
2) I framework ai quali ti riferisci (VCL e MFC) sono stati sviluppati 
prima che il C++ fosse standardizzato, quindi a quei tempi l'esigenza 
di classi che incapsulassero stringhe e contenitori era reale. Dopo la 
ratifica dello standard non e' cmq stato possibile "tornare indietro" 
per ragioni di compatibilita'.
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

stringhe del pascal.
Uh ? no non lo sono.
Le stringhe, cosi' come sono implementate dal Pascal non
sono utilizzate nella VCL (almeno non che io ricordi) e la
loro implementazione e' quella delle ShortString dell'Object
Pascal.  Addirittura le stringhe di Object Pascal sono
implementate per default alla C, ovvero come puntatori
"null-terminated".
-- 
The Follet

 >non lo posso utilizzare!!!
Ma come no? Io lo faccio quotidianamente....
[OT ON]
Quando inizi a sviluppare la DLL chiedi al wizard di farti
una DLL "estesa".
[OT OFF]
Ciao
Gaetano.
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ma come no? Io lo faccio quotidianamente....
Mi sembra che l'avessero detto anche altri su questo ng e comunque
devi usare lo stesso compilatore per dll e per exe vero?


[OT OFF]
Hai quotato a mio nome una frase scritta da un altro.


 Hai quotato a mio nome una frase scritta da un altro.
La frase scritta da quell'altro aveva "> >" prima
quindi non era la tua, in realta' ho quotato a tuo nome
il nulla (non c'era nessuna riga con un solo ">"


"null-terminated".
Scusa per la risposta in ritardo, ma effettivamente credo di aver
risposto in maniera errata, forse perché sono diversi anni che non
lavoro in Pascal. Effettivamente le stringhe del Pascal sono
implementate in maniera simile a quelle del C, ovvero terminanti con
lo zero. Le stringhe del Delphi utilizzate per gestire i componenti
VCL invece dovrebbero essere differenti, e queste sono compatibili con
le famose AnsiString del Borland C++ Builder, quindi la tua
osservazione é giusta.
Comunque siamo OT, quindi direi di non proseguire.


lo zero. 
Non vorrei continuare l'OT, ma giusto per precisare, come ho
detto nell'altro messaggio, le stringhe, in Pascal, sono
tipicamente gestite con un byte iniziale che indica la
lunghezza della stringa e tutti i byte a seguire.  Quindi,
contrariamente al C, la stringa inizia dall'offset 1,
anziche' 0.  In Delphi, invece, le stringhe sono gestite
come puntatori a zone di memoria null-terminated, quindi in
questo sono piu' simili al C/C++.
-- 
The Follet

 lo zero. 
no, le stringe in Pascal sono fatte in maniera diversa. Il primo byte 
contiene la lunghezza "n" della stringa e i successivi n byte 
contengono la stringa; per calcolare la lunghezza basta accedere quindi 
a stringa[0].
