Newsgroup: it.comp.programmare.win32
Titolo: Neofita C++ della Borland

Salve,
programmo da un annetto e mezzo in VB.
Dopo essermi procurato l'IDE di sviluppo della Borland (versione 3) ho
provato a "disegnare" un'interfaccia e a compilare poi il progetto.
Dopo la compilazione ho reperito l'exe dalla directory del programma e l'ho
lanciato con il solito doppio clic: tutto ok, l'interfaccia che avevo
disegnato prima mi è apparsa come un normalissimo programma. Ribadisco che
il programma non eseguiva alcuna operazione perché non ho scritto neanche
una riga di codice.
Ho quindi provato quest'exe appena fatto sul mio portatile dove il C++
Builder della Borland non è installatto e... sorpesa! Ecco il messaggio che
mi è apparso:
File DLL Vcl35.bpl non trovato
Ma con il C++ non è possibile scrivere degli exe indipendenti? Non è
possibile compilare un programma "solo per Windows" (o un altro OS) che non
necessiti di altre DLL o file di Run-time come il Visual Basic?
Grazie mille per avermi letto. A presto!!

necessiti di altre DLL o file di Run-time come il Visual Basic?
Nei limiti di cosa si intenda per "non necessitare di altre DLL".
I programmi sviluppati con qualsiasi compilatore Win32 necessitano,
per lo meno, delle librerie di sistema (ma si suppone quelle ci siano
sempre quindi la risposta alla tua domanda e' si').
Tieni presente che, compilando senza "run-time packages", il codice
risultante e', ovviamente, piu' grosso.

Certo se usi solo le API di Win32. Se invece, usi MFC, WTL, ATL, ecc e
anche, quindi le librerie del Borland, dovrai avere installata e registrata
la dll sul computer sorgente. Ti consiglio di controllare con una utility
come Depends, fornito con VS 6.0, per visualizzare le dipendenze esterne.
Oppure impara a programmare VERAMENTE e lascia perdere i vari tool.

Non passare perņ subito a programmare per Windows in C o C++, se non conosci
molto bene quest'ultimi. Te lo sconsiglio vivamente.

 In che senso? In realtà vorrei proprio imparare a programmare in c++ su
win9x per ottenere programmi quanto più performanti e "indipendenti"
possibile, senza scomodi file di run-time ed altri colli di bottiglia! :-)
Secondo te non basta un annetto e mezzo di esperienza col VB6? E' vero che
il C e il VB sono due cose molto diverse, ma almeno non sono a "digiuno" di
programmazione. Vorrei procurarmi un libro e cominciare...
Ciao!

programmazione. Vorrei procurarmi un libro e cominciare...
VB e C sono veramente molto diversi; in C inoltre non esiste il
concetto di finestra, quello che in VB richiede due click di mouse, in
C con le API di Windows richiede molte righe di codice senza senso, ma
con un po' di tempo e pratica non è impossibile (io sono passato da VB
alle API di Windows senza grandissimi problemi).
Posso comunque consigliarti di fare un po' di pratica con programmi
console (cioè stile DOS) prima di passare ai programmi a finestre,
anche se capisco che per un programmatore VB può essere frustrante.
Ciao
Marco Barisione (ICQ 84277092)

Oppure impara a programmare VERAMENTE e lascia perdere i vari tool.
Questa, onestamente, non l'ho capita.
Pero' ha un cattivo odore ;)
Mi puzza tanto di "Il VERO programmatore programma in assembly!".
--
Andrea Laforgia (ICQ 87230455)
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

concetto di finestra, quello che in VB richiede due click di mouse,
C e VB non sono confrontabili.
A parte il fatto che qui si parla di C++, che e' un linguaggio ancora
diverso (anche dal C).  VB e' un ambiente di programmazione. 
E' chiaro che la creazione di una finestra richieda due click di
mouse.  La creazione di una finestra con C++ Builder (C++ piu' o meno
standard, "decorato" con le estensioni per la programmazione sotto
Windows) ne richiede uno solo, se e' per questo.


 ha scritto nel messaggio news:98e2vn$7ol$1...@pluto.sm.dsi.unimi.it...

programmare veramente non significa necessariamente programmare a basso livello.
se un programmatore riesce a sfruttare al meglio soluzioni più ad alto livello può incrementare di molto la produttività.
poi dipende molto anche dalle dimensioni del progetto.
per realizzare una suite di programmi tipo Office un framework credo sia più che indispensabile. per scrivere un'aqpplicazione tipo
un plugin, o qualcosa che necessita di poco lavoro e mantenimento si possono usare le api e il C.
la via di mezzo più valida credo sia utilizzare il C++ e scriversi le poche classi che sono necessarie.
ci sono articoli molto interessanti su 
http://www.relisoft.com/book/win/index.htm
ciao
xaero

Non dico che non devi programmare in C o C++, meglio il secondo. Dico solo
che dovresti darti almeno per 2 anni alla programmazione pura in C o C++,
ovvero senza orientarti per il momento a programmare applicazioni con
interfaccia e con l'utilizzo di API. E' una cosa che non va bene.
Ad esempio in VB i tipi non hanno poi cosě grande importanza:
es. tu hai una variabile in VB dichiarata cosě:
   Dim myvar 'As Integer
in C e in C++ invece devi dare un tipo per forza alla variabile:
   int myvar;
In seguito se ad esempio vuoi far vedere in una piccola MessageBox in VB il
valore della variabile, basta:
  MsgBox myvar
in C e in C++, invece, non puoi passare un intero come tipo di parametro,
poiche quello richiesto č un LPCTSTR, ovvero una stringa e quindi dovrai
utilizzare la funzione itoa(int, char *, int) in questo modo:
  LPCTSTR myvarc;
  itoa(myvar, (LPTSTR) myvarc, 10);
  MessageBox(hwnd, myvarc, "Caption of MessageBox", MB_OK);
Capita la differenza? E questo č solo un piccolo esempio.

Windows) ne richiede uno solo, se e' per questo.
Sì, infatti mi riferivo alla programmazione con le API; in VC++, ad
esempio, anche se si usano le api si può creare una dialog con 2
click, ma poi gestirla non è purtroppo così semplice.




E' vero, forse č stata la cosa che mi ha creato + problemi passando da
VB a C++, ma 2 anni prima di iniziare a programmare con le API o con
una interfaccia grafica mi sembra un po' eccessivo, soprattutto su
Windows e per una persona che viene da VB.
Non capisco 2 cose nel tuo esempio:
1 - Ma itoa č una funzione standard?
2 - LPCTSTR č equivalente a const char* (senza Unicode), itoa scrive
in myvarc che perň č un puntatore che non punta a nulla, qundi il
programma potrebbe funzionare senza problemi, scrivere dove non
dovrebbe o bloccarsi. Perché poi hai dichiarato myvarc costante per
poi dover utilizzare (LPTSTR)


1 - Ma itoa è una funzione standard?
No.


_itoa e varianti non sono funzioni standard, anche se supportate dalla
maggior parte dei compilatori.
LPCTSTR è un tipo definito nella <windows.h> ed equivale ad un const char *,
e come hai detto senza unicode (in quel caso basterebbe _T(myvarc)).
Ho dichiarato LPCTSTR la variabile myvarc poichè la stringa richiesta dalla
MessageBox deve essere un'array di char ovvero char[].
Poi, però dato che la funzione itoa prende come parametro un char *,
equivalente ad un LPTSTR, faccio un cast, ovvero una forzatura della
conversione tra i tipi.
Vedi, le differenze sono minime tra i due. Comunque potevi anche utilizzare
la funzione standard fprintf inclusa nell'header <stdio.h>

 ha scritto nel messaggio
news:t93nat8l3cl95tt2s...@4ax.com...


 ha scritto nel messaggio
news:98ghqk$4tn$1...@pluto.sm.dsi.unimi.it...

Non sono d'accordo, io ho provato a imparare il c++ senza framework (solo
compilatore) e in 2 mesi di sforzi ci ho capito veramente poco. Appena ho
acquistato il c++ builder in 10 giorni avevo imparato piů di quanto non
avessi imparato nei 2 mesi precedenti. E DOPO ho studiato le API x vedere
come funzionano...

conversione tra i tipi.
Appunto non potevi dichiararla non const? E comunque myvarc non punta
a nessuna stringa valida.
