Newsgroup: it.comp.programmare.win32
Titolo: Domanda banale...

Salve a tutti,
innanzitutto grazie a chi mi ha consigliato il c++ builder della 
borland, devo ammettere che semplifica di molto la vita :)
Ho creato un programmino semplice semplice che si connette a un server 
di posta e scarica una mail, insomma, un classico programmino di prova 
per imparare un po' meglio i socket.
La mia applicazione manda e riceve stringhe di testo attraverso un 
socket (cSock); fin che le righe sono singole, va tutto bene... ma per 
righe multiple il programma mi si impalla andando avanti all'infinito. 
Mi spiego, per ricevere una mail dopo essermi autenticato al server dò 
il comando RETR 1 e il server mi invia la prima mail, che viene posta in 
un campo (TestoMail) di tipo TMemo nella form Form1. Per leggere tutte 
le righe inviate dal server, uso questo ciclo:
         while (res!=".")
         {
                 res=cSock->ReadLn();
                 Form1->TestoMail->Lines->Add(res);
         }
dove res è una stringa, naturalmente. Il programma riceve correttamente 
tutta la mail, ma quando arriva al puntino finale (".") che chiude ogni 
messaggio mail non si ferma e continua a ciclare.
Ho provato a mettere ".\n", ".\c\n", '.', ".\0" dentro il while al posto 
di "." ma il risultato non cambia per nulla.
Quindi.. qualcuno per caso mi darebbe un aiutino? :)
Grazie!
-- 
Andrea


Potresti fare un check che ti stampa, carattere per carattere, il codice
ascii di quello che arriva, per capire esattamente cosa sta arrivando (non
so se mi sono spiegato, ora faccio un esempio)
          while (1)
          {
                if (strlen(res) < 4) {
                    for (unsigned int i=0; i < strlen(res); i++) {
                        printf("%c\t%d\r\n", res[i], res[i]);
                    }
                }
                  res=cSock->ReadLn();
                  Form1->TestoMail->Lines->Add(res);
          }
L'ho fatto con le funzioni standard perchč non conosco l'ambiente Borland,
ma dovresti aver capito.. Btw non č la soluzione piů semplice, secondo me..
Per esempio come condizione invece di res != "stringa" potresti metterci res
!= NULL, oppure fare un check sul fallimento della chiamata a ReadLn...
Perchč dopo aver letto la riga con il punto si trova a non leggere niente e
restituisce errore... In bocca al lupo ;)
-- 
Tharkas


Io nn la vedrei sotto questo punto di vista ma piuttosto direi che Borland
c++ builder è tutto quello che ci si aspetta da un compilatore + ide, o
almeno questa resta la mia opinione, cosa che invece nn riscontro in VC++
che vedo povero di componenti e di tante altre cose... e presenta un
ambiente poco intuitivo sempre dal mio punto di vista cosa che invece
borland sa fare benissimo!!!
Ciao,
Antonio.

 borland sa fare benissimo!!!
La mia opinione sul VC++ è piuttosto differente:
1) IMHO non esiste programma fatto in BCB che non possa essere realizzato
in VC++, o che vi possa essere realizzato con un aumento di tempi
eccessivo/irragionevole
2) VC++ ha un debugger infinitamente più potente di BCB, anche solo per la
finestrella situata in basso dove, quando si usa MFC, vengono visualizzati
i TRACE e i memory leak al termine del programma (tutto questo, che io
sappia, non esiste in BCB); in particolare il fatto dei memory leak è
importantissimo, perché spesso i programmatori commettono errori di
memoria dinamica senza accorgersene; osservare i memory leak al termine
dell'esecuzione sviluppa nel programmatore un occhio particolare per gli
errori di memoria.
3) non ha senso dire che VC++ è povero di componenti, perché quelli di
VC++ non sono componenti: i componenti sono solo una bella trovata della
Borland; quelli di Visual C++ (suppongo che ti riferisci ai controlli da
mettere nelle dialog) sono i controlli standard di Windows; se ne vuoi
mettere degli altri cerca tra gli ActiveX, che sono a decine (sul mio PC
io credo di averne più di un centinaio).
4) conclusione: chi se ne importa se BCB ha il sistema RAD semplice e
intuitivo: VC++ è più potente (basta saperlo usare).
Ovviamente tutto questo vale anche per Delphi, con l'aggiunta che il C++
(sempre secondo la mia opinione) è più potente del Pascal, ad esempio per
quanto riguarda la gestione dei puntatori e degli arrays.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 intuitivo: VC++ è più potente (basta saperlo usare).
Anche qui dipende da cosa devi fare, da come, e da altri aspetti. Detta in
generale, la frase "VC++ è più potente" non è corretta.
Dato che questo confronto è stato fatto un sacco di volte senza mai
(giustamente) giungere ad una conclusione, questo è il mio piccolo ed
unico post sull'argomento.
Paolo.


 quanto riguarda la gestione dei puntatori e degli arrays.
Oddio fossero solo questi i vantaggi del c++, io penso siano molti di piu
senza nulla togliere a Delphi che è molto potente è che non è pascal ma
Object Pascal il che è dire...!!!

 unico post sull'argomento.
Eh troppo facile...


 Object Pascal il che è dire...!!!
Guarda che oggi come oggi una parvenza di oggetti ce li hanno pure i
linguaggi di scripting tipo JavaScript; il Pascal ha le classi, OK, ma io
parlavo di puntatori & arrays... e poi in ObjectPascal, che io sappia, non
esiste la derivazione multipla (anche se convengo che non la uso molto
spesso).


 spesso).
ma non mi pare sia cosi.

 ma non mi pare sia cosi.
Vorresti rifilarmi che la Borland ha messo la derivazione multipla anche
nell'ObjectPascal??? Io sono rimasto alla versione 6, che non ce l'ha...
Comunque anche se fosse, per me il C++ rimane sempre migliore.


 Comunque anche se fosse, per me il C++ rimane sempre migliore.
Non ti voglio rifilare ho detto solo... non mi pare e daro un'occhiata, poi
anche per me il C++ rimane uno dei migliori linguaggi non il migliore perchè
come si sa non ha molto senso parlare del migliore, il C++ è un linguaggio
general purpose ma questo non toglie che magari per calcoli scientifici
matlab ti offre prestazioni migliori e tool di sviluppo qualitativamente
buoni e professionali o cmq è piu adatto sotto questo profilo, anche se
convengo con te che attualmente il C++ è uno dei linguaggi piu potenti !

 tutto già a portata di mano.
Scusate l'intromissione nella discussione, ma a dir la verità nel C++Builder
c'è un ottimo strumento che segnala memory leak e molto altro (ad esempio,
FILE * mal gestiti e così via) che si chiama CodeGuard, disponibile in
Project->Options.
Poi, mi sento di spezzare una lancia in favore del Builder, che con la sua
VCL permette anche a un ignorante in win32 api o MFC cone me di scrivere
programmi per windows senza troppa fatica, velocemente, attraverso un'ide
comodissima, con prestazioni decisamente accettabili e conservando una
grande libertà d'azione =)
'sera lietissima, Marco

 convengo con te che attualmente il C++ è uno dei linguaggi piu potenti !
Meno male: almeno sul linguaggio possiamo concordare...
E in effetti se fossi costretto a utilizzare Delphi o BCB, certamente
sceglierei BCB, anche se sapevo che l'implementazione delle classi della
VCL è in Pascal... O_o ma forse adesso le cose sono cambiate, non sono
aggiornato in merito.


 Project->Options.
To': non me n'ero accorto... o_O
Questo BCB mi sta diventando un surrogato di VC++...
a ogni modo io preferisco avere tutto tra i TRACE.


 semplice e intuitivo: VC++ č piů potente (basta saperlo usare).
mica vero. MFC e ATL ci sono anche per C++ Builder, per esempio. Quindi 
fa almeno quanto Visual C++
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.2.4. C, C++ and ASM developers
                               and beta testers are welcome!

 OutputDebugMessage o c'č anche una versione Borland della AfxTrace?
includi gli header di ATL e avrai le funzioni di ATL


 E mostra anche i memory leak alla fine?
i leak, i buffer sovrascritti per sbaglio, gli oggetti allocati con una 
funzione e deallocati con quella sbagliata, i puntatori this non validi 
e un sacco di altra roba


 ha scritto nel messaggio
news:cd8pb8$3pn$1...@news.newsland.it...

Mi intrometto :-)
Io ho usato per parecchio tempo sia il Builder  (C++) che VsC++ a parte che
fra c++ builder e Delphi a mio avviso ce una bella differenza
ma questo non c'entra...
Sinceramente trovo Entrambi i compilatori più che ottimi con pro e contro da
entrambe le parti
tutto secondo il mio umile parere
-Builder-:
 Pro:
     -Dedug molto più "Potente" del Visual a parte il codecard configurabile
per vari aspetti ma anche gli strumenti che ti mette a disposizione
l'inspect sulle classi
     sui componenti ecc.
     -Componente e Package ottima trovata (per i puristi forse un pò meno
visto che ci hanno aggiunto estensioni e via dicendo...) cmq diciamo che se
si smanetta
    con i componente si riesce a fare ottime cose...e rendono il lavoro
molto più veloce (è un RAD)
    - I Frame dove li mettiamo ? anche questo ottimo strumento che mette a
disposizione
    - L'inspector o meglio le proprietà che mette a disposizione , se vuoi
crearti una form con determinate caratteristiche ci metti meno di due
secondi
       in Visual C++ già non esiste il concetto di autosize Presente in
Borland.
 Contro:
    - Secondo me ottima l'idea ottimo tutto ma implementato male!!!
    -Eccessivamente lento a compilare ci mette na vita (se poi levate gli
header precompilati! andate a farvi un caffe e preparate pure il pranzo)
    -Se decidi di mischiare codice win32 con le vcl IMHO un casotto non si
trova tanto bene il builder
     se segui la sua logica va tutto bene ma appena decidi di cambiare le
cose!! pensi!!! " forse è meglio che uso le API"
    -Le Vcl sono scritte in Object Pascal ho detto tutto
    -Se usi le Vcl il tutto codice funzionerà solo li! ma siccome usi i
componenti se constretto ad usare un strato di vcl  questo ti constringe
     a scrivere più codice per strutturare meglio la tua app.
-Visual Studio C++-:
    Pro:
        - Compilazione velocissima
        - Se lasci perdere la MFC e usi win32 ti trovi benissimo
        - in generale gli strumenti che mette a disposizione funzionano
tutti bene
        - secondo me ottimo.
    Contro:
        - Non capisco perchè si chiama Visual !!! (sto parlando del 6)
        - per gestire le interfacce è notevolmente più macchinoso del
builder
        - delle risorse hai il pieno controllo , però come sopra troppo
macchinoso...
Non mi dilungo perchè ho da fare .-)
Io generalmente uso entrambi :-) Borland e Visual per le interfacce e c++
come wrapper alle win32 per la logica del soft.
Ciao e Buon Lavoro
---
R.