Torna indietro   Hardware Upgrade Forum > Software > Programmazione

LG gram Pro 16Z90TP: il notebook grande ma sottile
LG gram Pro 16Z90TP: il notebook grande ma sottile
Schermo OLED da 16 pollici e piattaforma Intel Core Ultra della serie 200: questi gli ingredienti di LG gram Pro 16Z90TP, un notebook leggero e facilmente trasportabile che strizza l'occhio a chi vuole essere sempre produttivo anche lontano dalla scrivania, coniugando prestazioni e autonomia con batteria.
GeForce RTX 5060, due schede alla prova per capire se 8 GB di memoria sono ancora sufficienti
GeForce RTX 5060, due schede alla prova per capire se 8 GB di memoria sono ancora sufficienti
MSI GeForce RTX 5060 Gaming OC e AORUS GeForce RTX 5060 ELITE ci permettono di vedere da vicino l'ultima arrivata di casa NVIDIA, la GPU Blackwell attualmente meno costosa ad arrivare sul mercato con un prezzo a partire da 329 euro. Con 8 GB di VRAM è adeguata per il contesto attuale? La risposta è che dipende molto dalle necessità e aspettative di chi la compra.
Samsung Galaxy Tab S10 FE+: un tablet enorme a un prezzo super, ma con qualche limite
Samsung Galaxy Tab S10 FE+: un tablet enorme a un prezzo super, ma con qualche limite
Samsung Galaxy Tab S10 FE+ 5G si candida come una delle proposte più intriganti fra i tablet dalle dimensioni esagerate. Con uno schermo LCD da 13,1 pollici e una batteria da 10.090 mAh, oltre al supporto S Pen incluso, punta a competere con iPad Air a un prezzo ben inferiore. La proposta coreana appare solida sul piano del design, tuttavia presenta qualche difficoltà in termini di prestazioni pure.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-12-2002, 19:37   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
C++ ed HTML

ho scritto un programma in C/C++ nel quale sono presenti una miriade di stringhe, redirette su disco di questo tipo:

fprintf(fp,"<body bgcolor=\"#000000\">\n");
fprintf(fp,"<center>\n");
fprintf(fp,"<table border="1">\n");
fprintf(fp,"<tr>\n");
.....................................

queste, sono ancora delle più semplici, molte sono di gran lunga molto più complesse; il risultato è che tra:
codice C/C++/HTML/javascript il tutto diviene alquanto illeggibile e poco manutentabile

non volevo pensare ad un file esterno sul quale salvare il codice HTML o javascipt e poi richiamarlo all'occorrenza, ma ad un qualcosa che rimanga all'interno dell'eseguibile

se avete suggerimenti o esperienze analoghe

grazie 1000
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 01:38   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Un #define ?

#define HTMLHEADER "<body bgcolor=\"#000000\">\n<center>\n<table border=\"1\">\n<tr>\n"

Altrimenti puoi sempre definire una variabile che contiene quel codice...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 06:32   #3
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
la domanda è nata in quanto mi sono chiesto come fanno ad esempio word o excel quando si esporta una tabella o un documento in formato HTML

sicuramente per non perdersi hanno adottato qualche tecnica particolare che rende il codice ancora leggibile
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 07:43   #4
lombardp
Senior Member
 
L'Avatar di lombardp
 
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
Quote:
Originally posted by "cionci"

Un #define ?

#define HTMLHEADER "<body bgcolor=\"#000000\">\n<center>\n<table border=\"1\">\n<tr>\n"
In più potresti inserire la lunga lista di #define all'interno di un file H, che poi vai a includere dove gli utilizzi. COsì il tuop codice risulta compatto e leggibile, ed il file H facilmente manutenibile.
__________________
---> Lombardp
CSS Certified Expert (Master Level) at Experts-Exchange
Proud user of LITHIUM forum : CPU technology
Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo
lombardp è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 10:42   #5
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Non e' piu' semplice un normale

const string s = "blablabla"
oppure un
const char* s = "..."



usando il const char* tra l'altro il compilatore e' in grado di ottimizzare il codice come se avessi usato un #define (e senza i rischi del caso)

poi, non sarebbe piu' leggibile usare gli stream ?
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 16:03   #6
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originally posted by "/\/\@®¢Ø"

Non e' piu' semplice un normale

const string s = "blablabla"
oppure un
const char* s = "..."



usando il const char* tra l'altro il compilatore e' in grado di ottimizzare il codice come se avessi usato un #define (e senza i rischi del caso)

poi, non sarebbe piu' leggibile usare gli stream ?

e i doppi apici che ti servono all'interno delle linee HTML?

const string s = "blablabla=\"%s\" pincopallino"
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 16:50   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "misterx"

e i doppi apici che ti servono all'interno delle linee HTML?
Quelli servono anche con il define...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 19:32   #8
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originally posted by "cionci"

Quote:
Originariamente inviato da misterx
e i doppi apici che ti servono all'interno delle linee HTML?
Quelli servono anche con il define...
questo lo so anch'io, ma l'amico marco se n'era scordato
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 21:33   #9
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Per gli apici non e' cosi' facile, visto che e' una cosa intrinseca del c++
due cose semplici che mi vengono in mente:

1- Usare un altro carattere al posto degli apici (ad esempio un apice singolo), che dovra' essere successivamente cambiato. Si potrebbe fare ad esempio buttando l'output su uno stream su stringa e poi mandare la stringa (modificata) allo stream vero e proprio

"<body bgcolor=\"#000000\">\n<center>\n<table border=\"1\">\n<tr>\n"

diventerebbe quindi

"<body bgcolor='#000000'>\n<center>\n<table border='1'>\n<tr>\n"

In alternativa scrivi i caratteri scomodi come costanti e usi quelle:
fp << "<body bgcolor=" << quote << "#0000" << ..
dove
const char quote = '"';

Pero' forse la cosa migliore e' lavorare ad un livello piu' alto, crearsi degli oggettini per le parti piu' ripetitive;
Un qualcosa del tipo

HtmlBody hb;
hb.color = green; ( opportuni typedefs qui )
hb.align = center;
...

out << hb<< text << table << ...


una cosa del genere...
dipende cosa devi fare ovviamente !
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 19:08   #10
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
marco, tanto per entrare nel vivo dell'argomento: guarda questa porzione di codice che salva uno scipt; ho idea che nessuna regola sia valida; in pratica è un caos immane

Codice:
fprintf(fp,"<script language=\"JavaScript\"><!--\n");
fprintf(fp,"function apri(nomefile)\n");
fprintf(fp,"{\n");
fprintf(fp,"nw=window.open('','nwin','top=0 , left=0 , width=' + (screen.width-100) + ',height=' + (screen.height-100));\n");
fprintf(fp,"nw.document.writeln(\"<script>\");\n");
fprintf(fp,"nw.document.writeln(\"function zp(){\");\n");
fprintf(fp,"nw.document.writeln(\"immagine.height = immagine.height + 50;\");\n");
fprintf(fp,"nw.document.writeln(\"}\");\n");
fprintf(fp,"nw.document.writeln(\"function zm(){\");\n");
fprintf(fp,"nw.document.writeln(\"immagine.height = immagine.height - 50;\");\n");
fprintf(fp,"nw.document.writeln(\"}\");\n");
fprintf(fp,"nw.document.writeln(\"function full(){\");\n");
fprintf(fp,"nw.document.writeln(\"immagine.height = document.body.clientHeight-50\");\n");
fprintf(fp,"nw.document.writeln(\"}\");\n");
fprintf(fp,"nw.document.writeln(\"</script>\");\n");
fprintf(fp,"nw.document.writeln(\"<body topmargin='0' leftmargin='0'>\")\n");
fprintf(fp,"nw.document.writeln(\"<table border='1'>\");\n");
fprintf(fp,"nw.document.writeln(\"<td><h3><a href='javascript:zp()'>Z+</a></td><td><h3><a href='javascript:zm()'>Z-</a></td><td><h3><a href='javascript:full();'>Full</a></td><td><h3><a href='javascript:window.close()'>chiudi</a></td>\");\n");
fprintf(fp,"nw.document.writeln(\"</table>\");\n");
fprintf(fp,"nw.document.writeln(\"<img src='\" + nomefile + \"' name='immagine'>\");\n");
fprintf(fp,"nw.document.writeln(\"<script>\");\n");
fprintf(fp,"nw.document.writeln(\"immagine.height = document.body.clientHeight-50\");\n");
fprintf(fp,"nw.document.writeln(\"</script>\");\n");
fprintf(fp,"nw.document.writeln(\"</body>\")\n");
fprintf(fp,"}\n");
fprintf(fp,"// --></script>\n");


fprintf(fp,"<style>");\n");
fprintf(fp,".mio\t{\n");\n");
fprintf(fp,"font-family:Arial;\n");
fprintf(fp,"font-size:12px;\n");
fprintf(fp,"height:21px;\n");
fprintf(fp,"border-width:4px;\n");
fprintf(fp,"border-style:solid;\n");
fprintf(fp,"border-color:#C0C0C0;}\n");
fprintf(fp,"</style>\n");

fprintf(fp,"<body bgcolor=\"#000000\">\n");
fprintf(fp,"<center>\n");
fprintf(fp,"<table border=\"1\" cellpadding=\"5\" cellspacing=\"5\" bordercolor=\"#C0C0C0\" bordercolorlight=\"#C0C0C0\">\n");
[/siz]
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2002, 13:39   #11
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Una prima cosa che si puo' fare secondo me e' quella di usare gli stream.
Il tuo codice diverrebbe qualcosa del tipo:

Codice:
fp << "<script language=\"JavaScript\"><!--" << endl 
   << "function apri(nomefile)" << endl
   << "{\n" << "nw=window.open('','nwin','top=0 , left=0 , width=' + (screen.width-100) + ',height=' + (screen.height-100));\n" << ...
che alleggerisce gia' un po' ( spariscono tutti i fprintf e relative parentesi
tonde.
Altra cosa: ricordati che puoi concatenare piu' stringhe in modo semplice:

Codice:
"nw.document.writeln(\"<script>\");\n"
"nw.document.writeln(\"function zp(){\");\n"
e' equivalente a
Codice:
"nw.document.writeln(\"<script>\");\nnw.document.writeln(\"function zp(){\");\n"


se quindi il codice html e' statico potresti quindi prima scrivere la stringa a
parte e poi stamparla con una unica chiamata
ad esempio
Codice:
const char* c = "<script language=\"JavaScript\"><!--\n"
"function apri(nomefile)\n"
"{\n"
"nw=window.open('','nwin','top=0 , left=0 , width=' + (screen.width-100) + ',height=' + (screen.height-100));\n"
"nw.document.writeln(\"<script>\");\n"
"nw.document.writeln(\"function zp(){\");\n"
"nw.document.writeln(\"immagine.height = immagine.height + 50;\");\n";

...

fp << c << endl;
Anche in questo caso ottieni perlomeno di alleggerire l'output.

Un'altra soluzione potrebbe essere quella di leggere il codice html da file, dove puoi scrivertelo in modo "tradizionale"

Se invece il codice e' dinamico (e numeroso) secondo me come dicevo
piu' sopra ti conviene aggiungere un po' di astrazione: ad esempio crearti
una struttura dati gerarchica che rappresenti la pagina e i suoi elementi. In questo modo il codice 'sporco' va a finire solo in piccoli oggetti che provvedono alla stampa. Ad esempio una HtmlList a cui puoi aggiungere a runtime gli elementi della lista che ti servono; al momento di stamparla scrivera' da se il codice per la lista e in piu' provvedera' a far stampare gli oggetti che contiene (in modo simile a quanto accade con le Awt o le Swing di Java , se hai presente ).Perderai la visione del codice html ma ti restera' quello della struttura della pagina ( che e' quello che conta penso ). Tra l'altro dovrebbero esserci gia' delle librerie C o C++ che fanno qualcosa di simile ( scommetto si chiameranno libwww o libhtml ).
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2002, 16:43   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Basterebbe richiamare il costruttore con i parametri da inaserire al posto dei %s

Ad esempio basterebbe sovrascrivere l'operatore << per dare in output il codice modificato con i parametri passati al costruttore...
Una cosa del genere :

file << HTMLHeader(titolo, commento) << OpenWindowJScript(nomeFinestra, link) << HTMLLink(link, HTMLImg(pathImmagine));

Per fare l'ultima cosa questo bisogna ad esempio sovrascrivere l'operatore di conversine a string...
Una cosa del genere :
Codice:
#include <iostream>
#include <string>

using namespace std;

class HTMLInterface {
protected:
	string txt;
	HTMLInterface() { };
public:
	virtual operator string() { return txt; };
	friend ostream &operator << (ostream &out, const HTMLInterface &html);
};

inline ostream &operator << (ostream &os, const HTMLInterface &html) { os << html.txt; return os;};


class HTMLImg : public HTMLInterface
{
public:
	HTMLImg(const string path, const string l, const string h);
};

HTMLImg::HTMLImg(const string path, const string l, const string h)
{
	txt = "<img src=\"" + path + "\" width=\"" + l + "\" height=\"" + h + "\" border=\"0\">"; 
}

class HTMLLink : public HTMLInterface
{
public:
	HTMLLink(const string link, const string target, const string onclick, const string body);
};

HTMLLink::HTMLLink(const string link, const string target, const string onclick, const string body)
{
	txt = "<a href=\"" + link + "\"";
	if(target.length() > 0)
		txt += " target=\"" + target + "\"";
	if(onclick.length() > 0)
		txt += "onclick=\"" + onclick + "\"";
	txt += ">"+ body + "</a>";
}
Per provarlo basta una cosa del genere:
Codice:
cout << HTMLLink("pippo.html", "", "", HTMLImg("ciao.jpg", "100", "200"));
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2002, 19:05   #13
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originally posted by "/\/\@®¢Ø"



Tra l'altro dovrebbero esserci gia' delle librerie C o C++ che fanno qualcosa di simile ( scommetto si chiameranno libwww o libhtml ).

non lo metto in dubbio ma, se per usarle devi leggerti chilometri di documentazione

lasciamole a che le ha scritte
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2002, 11:35   #14
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
cionci ha colto nel segno quel che volevo dire, magari ridefinendo gli operatori di output invece che creando la stringa, rendendo piu' semplice la modifica on-the-fly della struttura.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2002, 19:40   #15
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
sicuramente esiste un metoo ancora + semplice; le classi non mi sono molto simpatiche
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-12-2002, 10:56   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "misterx"

le classi non mi sono molto simpatiche
Male...molto male E nonostante tutto le usi tutti i giorni
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2002, 09:01   #17
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originally posted by "cionci"

Quote:
Originariamente inviato da misterx
le classi non mi sono molto simpatiche
Male...molto male E nonostante tutto le usi tutti i giorni

e lo so cionci; ma mi riferivo solo a questo caso in specifico
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2003, 13:01   #18
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
un esempio banale; non vi sembra un pò macchinoso questo codice per effettuare una semplice conversione?

daccordo che il codice, prelevato su html.it ha la sola funzione di far capire i concetti che stanno alla base della programmazione ad oggetti: ma sembrerebbe che non in tutti i casi rappresenti una comodità

Codice:
/*
* Un semplice programma che converte le lire in Euro
* File Conversione.h
*/

class Conversione
{
	public:
	Conversione();
	~Conversione();

	long valore_lira;
	float valore_euro;

	void ottieni_valore();
	float converti_lira_in_euro( );
};



/*
* File Conversione.cpp
*/

#include <iostream.h>
#inclde "Conversione.h"

Conversione( )
{
	cout << "Inizio della conversione\n";
	valore_lira = 0;
	// Inizializzazione della variabile valore_lira
	valore_euro = 0.0;
	// Inizializzazione della variabile valore_euro
}

~Conversione( )
{
cout << "Fine della conversione\n";
}


void Conversione::ottieni_valore( )
{
cout << "Inserire il valore in lire: " ;
cin >> valore_lira;
cout << endl;
}


float Conversione:: converti_lira_in_euro( )
{
	float risultato;
	risultato = ((float) valore_lira) / (float) 1936.27;
	return risultato;
}


main( )
{
	Conversione conv;
	conv.ottieni_valore( );
	conv.valore_euro = conv.converti_lira_in_euro( );
cout << conv.valore_lira <<
" in lire, vale " << conv.valore_euro << " Euro."
cout << endl;

	return(0);
}
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2003, 13:33   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Certo, ma è chiaramente un esempio didattico...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2003, 13:26   #20
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Quote:
Originally posted by "misterx"

un esempio banale; non vi sembra un pò macchinoso questo codice per effettuare una semplice conversione?

daccordo che il codice, prelevato su html.it ha la sola funzione di far capire i concetti che stanno alla base della programmazione ad oggetti: ma sembrerebbe che non in tutti i casi rappresenti una comodità
Questo e' un esempio che mostra perche' un linguaggio che supporti solo la programmazione OO (come Java) nonj e' il massimo. Ci sono cose che risultano migliori fatte in modo procedurale, altre se fatte ad oggetti. Non ha senso costruire un oggetto per fare il lavoro di una funzione (a meno che non ti serva un oggetto-funzione ovviamente ).
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


LG gram Pro 16Z90TP: il notebook grande ma sottile LG gram Pro 16Z90TP: il notebook grande ma sotti...
GeForce RTX 5060, due schede alla prova per capire se 8 GB di memoria sono ancora sufficienti GeForce RTX 5060, due schede alla prova per capi...
Samsung Galaxy Tab S10 FE+: un tablet enorme a un prezzo super, ma con qualche limite Samsung Galaxy Tab S10 FE+: un tablet enorme a u...
Motorola razr 60 Ultra: il migliore! Peccato per l’AI un po’ ''zoppa''. Recensione Motorola razr 60 Ultra: il migliore! Peccato per...
AWS Summit Milano 2025: accelerare sull'IA per liberare il potenziale delle imprese italiane AWS Summit Milano 2025: accelerare sull'IA per l...
Raffreddare le GPU con i laser, l'eserci...
Per Nintendo è un passo avanti, m...
Loongson sfida Intel: ecco la CPU server...
Pasqal presenta la sua roadmap: il primo...
Siemens Tech Talks: ecco come le imprese...
Laowa 12mm f/2.8 Lite Zero-D FF: il gran...
Pornhub: dal 25 luglio sarà obbli...
Se non basta la batteria, c'è la ...
Android 15, display quadrato e tastiera ...
GeForce RTX 5050: la variante laptop pot...
Insta360 Flow 2: stabilizzatore gimbal p...
800 watt per centimetro quadrato: la nuo...
Hai questo modello di PlayStation 5? Il ...
Nothing Phone (3): addio alla ricarica d...
Questa è la nuova Mercedes elettr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v