Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Dopo più di un anno dal primo test drive ci siamo rimessi al volante della Renault 5 E-Tech Electric, questa volta utilizzandola come prima auto per circa due settimane. Scoprite con noi se il progetto convince ancora
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-09-2007, 15:55   #1
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
[C] Compilazione programmi

Salve mi sono accorto di una cosa...alcuni programmi in C, compilano e vengono eseguiti correttamente totto LINUX con gcc o altro...ma sotto windows con DEV C++ invece da molti errori di compilazione e nn vanno mai.

COme mai????
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:00   #2
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
COme mai????
Forse perché richiedono librerie e caratteristiche presenti solo su Linux... Il porting in ambienti Windows di programmi sviluppati per Linux è facilitato da Cygwin.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:03   #3
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
Ciao grazie della risspota...ed esiste un interfaccia che si puo usare sotto windows che ti faccia avere le librerie di linux...quindi che nn ti dii problemi per compilare programmi in C?
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:08   #4
niki89
Senior Member
 
L'Avatar di niki89
 
Iscritto dal: May 2005
Città: roma
Messaggi: 1039
ciao non ne sono sicuro ma penso che non si possono mettere librerie di linux sotto windows
niki89 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:19   #5
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
Ciao grazie della risspota...ed esiste un interfaccia che si puo usare sotto windows che ti faccia avere le librerie di linux
Ci sono programmi che possono essere "portati" sotto Windows senza troppe difficoltà, altri che richiedono modifiche più o meno pesanti, altri che non possono essere compilati affatto. Tutto dipende dal programma, non si può dare una risposta valida in assoluto.

Il progetto Cygwin può rendere meno traumatica la fase di compilazione di programmi Linux sotto Windows.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:22   #6
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
siccome io e l'inglese ci odiamo a vicenda...nn ho capito molot...è un prog da scaricare?

o cosa?

grazie
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:33   #7
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
siccome io e l'inglese ci odiamo a vicenda...nn ho capito molot...è un prog da scaricare?
Un programmatore che non conosce l'inglese è equiparabile ad un giocatore di hockey su ghiaccio che non sa pattinare.

Cygwin è un ambiente che ricrea sotto Windows le condizioni per compilare programmi Linux, ovviamente non ti consentirà di compilare qualsiasi sorgente ma sempre meglio di nulla!
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:35   #8
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
ok l'ho scaricato e installato...mi apre una finestra stile dos e devo scrive il comando...per compilare che comando devo inserire?
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:41   #9
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
per compilare che comando devo inserire?
Gli stessi che utilizzeresti in Linux (make, configure, gcc, ...), come ti ho già detto Cygwin crea un ambiente Unix-like in Windows.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 16:52   #10
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
L'avevo supposto...ma gcc nomefile.c nn va...dice command not found...
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 17:02   #11
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
.ma gcc nomefile.c nn va...dice command not found...
Ipotesi:

A) Non hai installato GCC. Cercalo all'interno della cartella di installazione.

B) La cartella con gli eseguibili di Cygwin non è tra quelle contenute nella variabile PATH di Windows. Se non è presente aggiungi la cartella di cui sopra.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 17:06   #12
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
nn ho installato gcc...ho messo solo Cygwin
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 17:13   #13
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
nn ho installato gcc...ho messo solo Cygwin
Tra i programmi installabili con Cygwin c'è ANCHE GCC, ovviamente devi sceglierlo durante la fase di installazione. L'hai fatto?

Hai verificato se nella cartella dove hai installato Cygwin ci sia anche GCC?

La cartella con gli eseguibili di Cygwin è tra quelle definite dalla variabile PATH?
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 17:16   #14
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Non ci hai ancora detto cosa stai cercando di compilare sotto Windows... Cygwin potrebbe essere inutile nel tuo caso.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 17:37   #15
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
Allora...mi apre di aver scelto tutto quando installavo...cmq la cartella cygwin l'ha messa sotto C:\
Anche se nn trovo gcc nella carte di gygwin...cmq ho creato per un progetto di un esame all'unversità dei file per implementare analizzatore sintattico e lessicale per file di tipo xsml, in più parte del progetto prevedeva l'implementazione di funzioni per analizzare delle query sempre nel linguaggio in xsml, e l'ho dovuto fare sotto linux perchè sotto windows non compilava mai, menter sotto linux andava tutto bene. pero adesso nn posso più utilizzare linux e devo fare in modo di poter programmare in C con windows
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 18:03   #16
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
e l'ho dovuto fare sotto linux perchè sotto windows non compilava mai, menter sotto linux andava tutto bene. pero adesso nn posso più utilizzare linux e devo fare in modo di poter programmare in C con windows
Puoi rendere accessibile il tuo sorgente? Sarà più facile determinare perché non riesci a compilarlo in Windows. Possibili cause: errori da parte tua, uso di librerie specifiche per Linux, uso di caratteristiche tipiche di Linux, ecc.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 18:40   #17
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
Ora posterò la prima parte del progetto che consiste nell'analizzatore lessicale...cmq voglio specificare che sotto linux funge...quindi il file è corretto.

sono 3 file, l'header, il main e il file con le funzioni chiamato dal main.

Codice:
#ifndef LEX_H
#define LEX_H

#include <stdio.h>

/* stati dell'analizzatore lessicale */
typedef enum
{
	/* analisi del contenuto di un tag */
	LEX_STATE_CONTENT,
	/* analisi di uno start-tag o end-tag */
	LEX_STATE_TAG
} lex_state;

/* struttura che rappresenta un file da analizzare */
typedef struct
{
	/* stream di input dell'analizzatore */
	FILE *file;
	/* stato dell'analizzatore */
	lex_state state;
	/* posizione del prossimo carattere dello stream */
	int riga, colonna;
} lex_an;

/* enumerazione dei tipi di token dell'analizzatore lessicale */
typedef enum
{ 
	ERROR,
	OPEN_START_TAG,
	OPEN_END_TAG,
	CLOSE_TAG,
	EQUAL,
	NAME,
	STRING
} token_type;

/* tipi di errore */
enum
{ 
	ERR_BAD_ARG = 1,
	ERR_INPUT,
	ERR_MEM,
	ERR_EOF,
	ERR_INVALID_TOKEN,
	ERR_FILE,
	ERR_GENERIC
};

/* rappresenta il token */
typedef struct
{
	/* testo del token */
	char *text;
	/* tipo di token */
	token_type type;
	/* posizione del token nel documento */
	int riga, colonna;
} token;

/* imposta il prossimo token */
int get_next_token(lex_an *pla, token *ptk);

/* crea un nuovo analizzatore lessicale */
int new_lexical_analyzer(char *fname, lex_an *pla);

/* chiude l'analizzatore lessicale */
int close_lexical_analyzer(lex_an *pla);

#endif




Codice:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <ctype.h>

#include "xsml_lex.h"

#define MAX_STRING_LEN 255

int prev_colonna;

char get_next_char(lex_an *la)
{
	char c = fgetc(la->file);
	
	if (c != EOF)
	{
		if (c == '\n') { la->riga++; prev_colonna = la->colonna; la->colonna = 1; }
		else la->colonna++;
	}
		
	return c;
}

void unget_char(char c, lex_an *la)
{
	ungetc(c, la->file);

	if (c == '\n') { la->riga--; la->colonna = prev_colonna; }
	else la->colonna--;
}

int is_tag_char(char c, int position)
{
	/* deve iniziare per carattere alfabetico o _ */
	if (position == 0)
		return isalpha(c) || c == '_';
	else
		return isalpha(c) || isdigit(c) || c == '-' || c == '.' || c == '_'; 
}

int get_next_tag_token(lex_an *la, token *tok)
{
	int max_string_len = MAX_STRING_LEN;

	char *str = (char *)malloc(max_string_len);
	
	/* chiude la stringa per evitare di farlo in caso di errore */
	str[0] = 0;

	/* posizione attuale all'interno del buffer str */
	int k = 0;
	
	tok->text = str;

	if (feof(la->file))
	{
		tok->type = ERROR;
		return ERR_EOF;
	} 
	
	/* legge un carattere */
	char c = get_next_char(la);
	
	/* salta eventuali caratteri di separazione */
	while(c == ' ' || c == '\n' || c == '\t')
	{
		tok->riga = la->riga;
		tok->colonna = la->colonna;

		if (feof(la->file)) return ERR_EOF;
		c = get_next_char(la);
	}

	switch(c)
	{
		case '<':
		if (feof(la->file))
		{
			tok->type = ERROR;
			return ERR_INVALID_TOKEN;
		}
		c = get_next_char(la);
		
		/* apre un end tag */
		if (c == '/')
		{
			tok->type = OPEN_END_TAG;
			if (feof(la->file))
			{
				tok->type = ERROR;
				return ERR_INVALID_TOKEN;
			}
		}
		else
		{
			/* apre uno start tag */
			tok->type = OPEN_START_TAG;
			unget_char(c, la);
		}
		
		do
		{
			c = get_next_char(la);

			/* se si e' arrivati alla fine del buffer */
			if (k == max_string_len-1)
			{
				max_string_len *= 2;
				str = realloc(str, max_string_len);
				if (str == NULL)
				{
					tok->type = ERROR;
					tok->text[k] = 0;
					return ERR_MEM;
				}
				tok->text = str;
			}
			
			/* scrive il carattere */
			str[k] = c;
		} while(!feof(la->file) && is_tag_char(c, k++));
		
		if (feof(la->file))
		{
			tok->type = ERROR;
			tok->text[k] = 0;
			return ERR_EOF;
		}
		
		if (c != '>' && c != ' ' && c != '\n' && c != '\t')
		{
			tok->type = ERROR;
			tok->text[k] = 0;
			return ERR_INVALID_TOKEN;
		}
		
		k--;
		if (k == 0)
		{
			tok->type = ERROR;
			tok->text[1] = 0;
			return ERR_INVALID_TOKEN;
		}
		if (c == '>') unget_char(c, la);
		
		str[k] = 0;
		break;
		
		/* chiude un tag */
		case '>':
		tok->type = CLOSE_TAG;
		la->state = LEX_STATE_CONTENT;
		break;
		
		case '=':
		tok->type = EQUAL;
		break;
		
		case '"':
		case '\'':
		{
			char open_quote = c;
			tok->type = STRING;
			
			if (feof(la->file))
			{
				tok->type = ERROR;
				return ERR_INVALID_TOKEN;
			}
			
			do
			{
				c = get_next_char(la);
				if (feof(la->file))
				{
					tok->type = ERROR;
					tok->text[k] = 0;
					return ERR_EOF;
				}

				/* se si e' arrivati alla fine del buffer */
				if (k == max_string_len-1)
				{
					max_string_len *= 2;
					str = realloc(str, max_string_len);
					if (str == NULL)
					{
						tok->type = ERROR;
						tok->text[k] = 0;
						return ERR_MEM;
					}
					tok->text = str;
				}

				/* scrive il carattere */
				str[k++] = c;
			}
			while(c != open_quote && c != '>' && c != '<');
			
			if (open_quote != c)
			{
				tok->type = ERROR;
				str[k] = 0;
				return ERR_INVALID_TOKEN;
			}
			else k--;
		}
		break;
		
		default:
		/* dovrebbe essere un NAME */
		tok->type = NAME;

		if (feof(la->file))
		{
			tok->type = ERROR;
			return ERR_INVALID_TOKEN;
		}
		
		while(1)
		{
			/* se sono caratteri speciali */
			if (!isdigit(c) && !isalpha(c) && c != '_' && c != '-')
			{
				if ((c == '>')||(c == '='))
				{
					unget_char(c, la);
					break;
				}
				else if ((c == ' ')||(c == '\n')||(c == '\t')) break;
				
				/* altrimenti errore */
				tok->type = ERROR;
				tok->text[k] = 0;
				return ERR_INVALID_TOKEN;
			}

			/* se si e' arrivati alla fine del buffer */
			if (k == max_string_len-1)
			{
				max_string_len *= 2;
				str = realloc(str, max_string_len);
				if (str == NULL)
				{
					tok->type = ERROR;
					tok->text[k] = 0;
					return ERR_MEM;
				}
				tok->text = str;
			}

			/* scrive il carattere */
			str[k++] = c;

			c = get_next_char(la);
			if (feof(la->file))
			{
				tok->type = ERROR;
				tok->text[k] = 0;
				return ERR_INVALID_TOKEN;
			}
		}
		
		break;
	}

	/* chiude la stringa */
	str[k] = 0;

	return 0;
}

int get_next_content_token(lex_an *la, token *tok)
{
	int max_string_len = MAX_STRING_LEN;

	char *str = (char *)malloc(max_string_len);
	
	/* chiude la stringa per evitare di farlo in caso di errore */
	str[0] = 0;

	/* posizione attuale all'interno del buffer str */
	int k = 0;
	
	tok->text = str;

	tok->type = STRING;

	/* finch� non si e' raggiunta la file del file */
	while(!feof(la->file))
	{
		/* legge un carattere */
		char c = get_next_char(la);
		
		if (feof(la->file))
		{
			if (k == 0)
			{
				tok->type = ERROR;
				tok->text[k] = 0;
				return ERR_EOF;
			}
			break;
		} 
	
		/* se si e' arrivati alla fine del buffer */
		if (k == max_string_len-1)
		{
			max_string_len *= 2;
			str = realloc(str, max_string_len);
			if (str == NULL)
			{
				tok->type = ERROR;
				tok->text[k] = 0;
				return ERR_MEM;
			}
			tok->text = str;
		}

		str[k++] = c;

		/* apertura di un tag */
		if (c == '<')
		{
			/* torna indietro di un carattere nella lettura del file */
			unget_char(c, la);
			k--;
			
			/* passa allo stato che si occupa dell'analisi del tag */
			la->state = LEX_STATE_TAG;

			if (k == 0) return get_next_tag_token(la, tok);
			break;
		}
	}
	
	str[k] = 0;
	
	return 0;
}

int get_next_token(lex_an *la, token *tok)
{
	tok->riga = la->riga;
	tok->colonna = la->colonna;

	if (feof(la->file))
	{
		tok->text = (char *)malloc(1);
		tok->text[0] = 0;
		tok->type = ERROR;
		return ERR_EOF;
	}

	switch(la->state)
	{
		case LEX_STATE_CONTENT:
			return get_next_content_token(la, tok);
		break;
			
		case LEX_STATE_TAG:
			return get_next_tag_token(la, tok);
		break;
	}
	
	return ERR_GENERIC;
}

int new_lexical_analyzer(char *filename, lex_an *la)
{
	la->file = fopen(filename, "r");
	if (la->file == NULL) return ERR_FILE;

	la->state = LEX_STATE_CONTENT;
	la->riga = 1;
	la->colonna = 1;
	
	return 0;
}

int close_lexical_analyzer(lex_an *la)
{
	fclose(la->file);
	
	return 0;
}


Codice:
#include <stdio.h>
#include <stdlib.h>
#include "xsml_lex.h"

/* numero dei tipi di token (incluso il tipo sconosciuto) */
#define TOKEN_TYPES_NUM 8

/* stringhe associate ai tipi di token */
static char *token_types[TOKEN_TYPES_NUM] = {
	"unknown token type",
	"ERROR",
	"OPEN_START_TAG",
	"OPEN_END_TAG",
	"CLOSE_TAG",
	"EQUAL",
	"NAME",
	"STRING"
};

/* restituisce la string associata al tipo di token in input */
char *token_type_to_string(int token_type)
{
	/* token sconosciuto */
	if (token_type >= TOKEN_TYPES_NUM-1) return token_types[0];
		
	/* token noto */
	return token_types[token_type+1];
}

int main(int argc, char **argv)
{
	int error_code;
	lex_an la;
	token tok;
	
	/* controlla che il numero di parametri sia 1 (il nome del file) */
	if (argc != 2)
	{
		printf("Uso: lex_an <nome_file.xsml>\n");
		return 1;
	}
	
	/* crea l'analizzatore lessicale */
	if (error_code = new_lexical_analyzer(argv[1], &la))
	{
		printf("new_lexical_analyzer() ERROR_CODE = %d\n", error_code);
		return error_code;
	}

	/* ottiene e stampa tutti i token contenuti nel file xsML */
	do
	{
		error_code = get_next_token(&la, &tok);
		if (tok.type == CLOSE_TAG || tok.type == EQUAL)
			printf("%d,%d\t%s\n",
				   tok.riga, tok.colonna, token_type_to_string(tok.type));
		else
			printf("%d,%d\t%s\t\"%s\"\n",
				   tok.riga, tok.colonna, token_type_to_string(tok.type), tok.text);
	}
	while(!error_code);

	printf("get_next_token() ERROR_CODE = %d\n", error_code);

	/* chiude l'analizzatore lessicale */
	if (error_code = close_lexical_analyzer(&la))
	{
		printf("close_lexical_analyzer() ERROR_CODE = %d\n", error_code);
		return error_code;
	}
	
	return 0;
}

Il primo è l'header, il secondo il file con le funzioni, il terzo il main.
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 18:45   #18
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
Ora posterò la prima parte del progetto che consiste nell'analizzatore lessicale...cmq voglio specificare che sotto linux funge...quindi il file è corretto.
Nessuno lo mette in dubbio, il fatto che compili sotto Linux non significa che funzionerà necessariamente anche su Windows senza modifiche. Dovresti mettere TUTTO il sorgente in un file zippato e pubblicarlo su uno spazio Web (un tuo sito oppure su servizi tipo DepositFiles).
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2007, 18:51   #19
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
Forse ho risolto sono stato un emerito coglione...basta usare dev c++, pero bisogna creare un nuovo progetto e mettere tutti e 3 i file che ho postato su quel progetto e compila e crea l'exe...l'unica cosa..che quando lancio l'exe mi da schermata dos per un secondo e poi esce senza farmi vedere niente, ho provato nel main alla fine sia a return 0, sia system("PAUSE") sia getchar().
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2007, 08:03   #20
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
Eseguilo da lanciando un prompt dei comandi: Start -> Esegui -> cmd -> Invio
Ti sposti nella directory del tuo progetto entri nella versione - suppongo - debug ed esegui il file. Probabilmente hai una exit prima e ti esce senza aspettare.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati? Renault 5 elettrica al giudizio definitivo: solo...
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
Gli utenti passano più tempo su Instagra...
L'AI sta facendo guadagnare miliardi anc...
L'Odissea di Nolan rilancia Assassin's C...
Russia vieta il mining di criptovalute a...
Lenovo sta preparando il lancio di un Go...
L'intelligenza artificiale colpisce dove...
Xiaomi, si prepara ad aggiornare la fasc...
Rincari in arrivo per gli iPhone: i nuov...
Le edizioni fisiche dei giochi per PlayS...
Aziende IA comprano migliaia di libri ac...
L'IA frena gli utenti di Reddit: azioni ...
Questi pannelli solari non producono sol...
Tutte le offerte TOP del weekend Amazon,...
Nuovi coupon nascosti Amazon, al via que...
La vera rivoluzione di AMD Zen 6 potrebb...
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: 17:06.


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