 
View Full Version : I files INI
Scusate la mia ignoranza ma qualcuno sarebbe così gentile da spiegarmi che cosa sono e come funzionano i files *.ini?????
sono dei file in cui sono presenti delle coppie chiave-valore che puoi leggere con delle apposite api. Se conosci java sono analoghi ai file con estensione properties ma in piu' ti consentono di gestire le sezioni
nn conosco Java( nn lo ho ancora fatto):(:(
Mi potresti spiegare come usarli con il C????????
Tnk per la risposta;)
Originariamente inviato da Luc@s 
[B]nn conosco Java( nn lo ho ancora fatto):(:(
Mi potresti spiegare come usarli con il C????????
Tnk per la risposta;) 
se hai bisogno di un file dove settare delle proprieta' per le tua applicazione fallo in un ini file. Servono solo a quello ;)
e poi come li leggo ????????
ma sono scritti tipo cosi????????
[nome]
nomeprog="Mioprog"
[versione]
numero=0,7
ap................ cionci helpppppppppp
Sì...sono scritti in quel modo...
Comunque ora il loro uso è deprecato (anche se a me piacciono ancora)...e al loro posto si dovrebbe usare il registro di Windows...
Le API di Windows da usare per accedervi (a meno che tu non ti voglia fare qualche tua funzione per accederci) sono :
GetPrivateProfileInt
GetPrivateProfileSection
GetPrivateProfileSectionNames
GetPrivateProfileString
GetPrivateProfileStruct
Un esempio dell'uso di queste funzioni...
UINT GetPrivateProfileInt(
  LPCTSTR lpAppName,  // address of section name
  LPCTSTR lpKeyName,  // address of key name
  INT nDefault,       // return value if key name is not found
  LPCTSTR lpFileName  // address of initialization filename
);
 
Parameters
lpAppName 
Pointer to a null-terminated string containing the section name in the initialization file. 
lpKeyName 
Pointer to the null-terminated string containing the key name whose value is to be retrieved. This value is in the form of a string; the GetPrivateProfileInt function converts the string into an integer and returns the integer. 
nDefault 
Specifies the default value to return if the key name cannot be found in the initialization file. 
lpFileName 
Pointer to a null-terminated string that names the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. 
E per la scrittura :
WritePrivateProfileSection
WritePrivateProfileString
WritePrivateProfileStruct
sei sempre un grande cionci:cool:
magomerlinopaolo
11-06-2002, 14:33
io i file ini li considero anche migliori del registro in quanto quest' ultimo è già pieno di porcherie, poi non ci vuole niente a correggere un file .ini a mano...
Originariamente inviato da magomerlinopaolo 
[B]io i file ini li considero anche migliori del registro in quanto quest' ultimo è già pieno di porcherie, poi non ci vuole niente a correggere un file .ini a mano... 
Concordo...anche se non sempre conviene alle nostre applicazioni che il file .ini sia così semplice da modificare... In questi casi...meglio il registro...
magomerlinopaolo
11-06-2002, 18:05
eheh questo è anche vero :)
e pensare che in ambiente BCB sono di una facilità estrema da trattare; forse anche sin troppo
Originariamente inviato da misterx 
[B]e pensare che in ambiente BCB sono di una facilità estrema da trattare; forse anche sin troppo 
mi faresti un esempio.......... sono curioso:rolleyes:
Originariamente inviato da misterx 
[B]e pensare che in ambiente BCB sono di una facilità estrema da trattare; forse anche sin troppo 
Anche con le API sono semplicissimi da trattare...
Originariamente inviato da Luc@s 
[b]
mi faresti un esempio.......... sono curioso:rolleyes: 
ti accontento subito; tieni presente che sono funzioni della VCL che semplificano le chiamate alle API di windows; in alcuni casi limitazioni comprese
questo esempio salva in un file INI la posizione e dimensioni attuali del tuo Form:
TIniFile *MyIni = new TIniFile("myini.ini");
    MyIni->WriteInteger( "Form",
			 "WindowState", WindowState );
    if ( WindowState == wsNormal )
    {  MyIni->WriteInteger( "Form", "Left", Left );
       MyIni->WriteInteger( "Form", "Top", Top );
       MyIni->WriteInteger( "Form", "Width", Width );
       MyIni->WriteInteger( "Form", "Height", Height );
    };
    delete MyIni;
quest'altro legge l'INI file e posiziona la Form alle coordinate e dimensioni precedenti 
   TIniFile *MyIni = new TIniFile("myini.ini");
   SetBounds(
	MyIni->ReadInteger( "Form", "Left", Left ),
        MyIni->ReadInteger( "Form", "Top", Top ),
        MyIni->ReadInteger( "Form", "Width", Width ),
        MyIni->ReadInteger( "Form", "Height", Height ) );
   WindowState = MyIni->ReadInteger( "Form", 
					"WindowState", 
	WindowState );
    delete MyIni;
ma BCB, è un linguaggio di programmazione?
Originariamente inviato da Luc@s 
[B]ma BCB, è un linguaggio di programmazione? 
Bolrand C++ Builder...è un compilatore C++ che ha un framework proprietario per la costruzione di applicazioni Windows...
Comunque quello che vedi sopra frutta il paradigma di programmazioni ad oggetti e quindi il C++...
a me i RAD nn piacciono molto perche, secondo me, è piu bello scriverselo in codice il form piuttosto che farlo come in VB o DELHPI.................... tu cionci che ne pensi di questa mia affermazione????????
dipende dal tempo che hai a disposizione per programmare poi, oramai le interfacce più sono standard e meglio è
se hai la possibilità di disegnarle sono certo che divengono molto + ergonomiche ed user-friendly: compito di solito molto arduo
dubito che oggi come oggi esistano ancora programmatori che creino a suon di codice le interfacce, manca il tempo e visto che oramai ci sono i mezzi, meglio usare quelli:) 
è solo una questione di adattamento;)
Originariamente inviato da misterx 
[B]dipende dal tempo che hai a disposizione per programmare poi, oramai le interfacce più sono standard e meglio è
se hai la possibilità di disegnarle sono certo che divengono molto + ergonomiche ed user-friendly: compito di solito molto arduo
dubito che oggi come oggi esistano ancora programmatori che creino a suon di codice le interfacce, manca il tempo e visto che oramai ci sono i mezzi, meglio usare quelli:) 
è solo una questione di adattamento;) 
Si ma il BCB costa, e a skarikarlo (in bolletta perche ho una ISDN) siamo li.
Almeno ce fosse na versione personal (come per il JBuilder 5) gratuita da skarikare:rolleyes: :rolleyes: 
P.S: allegheresti uno shoot del BCB che usi tu cosi vedo com'è?
Originariamente inviato da Luc@s 
[B]a me i RAD nn piacciono molto perche, secondo me, è piu bello scriverselo in codice il form piuttosto che farlo come in VB o DELHPI.................... tu cionci che ne pensi di questa mia affermazione???????? 
I RAD sono molto utili...specie se fatti bene come Borland C++ Builder...
Ma tu programmi in C...e quindi non puoi usare le capacità RAD degli ambienti Borland e Microsoft...
Comunque con le API in C si fa così :
	char iniFile[] = "c:\\mioIni.ini";
	char buffer[1024];
	RECT rect;
	GetWindowRect(pWnd, &rect);
	WritePrivateProfileString("Dimensioni", "Top", itoa(rect.top, buffer, 10), iniFile);
	WritePrivateProfileString("Dimensioni", "Bottom", itoa(rect.bottom, buffer, 10), iniFile);
	WritePrivateProfileString("Dimensioni", "Left", itoa(rect.left, buffer, 10), iniFile);
	WritePrivateProfileString("Dimensioni", "Right", itoa(rect.right, buffer, 10), iniFile);
Originariamente inviato da cionci 
[B]
Ma tu programmi in C... 
Per adesso;)
Fai conto che sto per fare il Liceo Classico, quindi di tempo per impararmi bene il C e C++ ne ho:D 
E per leggere l'ini  comme se fa?
Appunto...ma se hai cominciato ti conviene almeno arrivare a buon punto :)
Per la lettura :
	RECT rect;
	rect.top = GetPrivateProfileInt("Dimensioni", "Top", 0, iniFile);
	rect.bottom = GetPrivateProfileInt("Dimensioni", "Bottom", 0, iniFile);
	rect.left = GetPrivateProfileInt("Dimensioni", "Left", 0, iniFile);
	rect.right = GetPrivateProfileInt("Dimensioni", "Right", 0, iniFile);
ok Grazie per l'aiuto!!!!
I files di intestazione è <??????>:cool: 
e............
Si ma il BCB costa, e a skarikarlo (in bolletta perche ho una ISDN) siamo li. 
Almeno ce fosse na versione personal (come per il JBuilder 5) gratuita da skarikare:rolleyes: :rolleyes:   
P.S: allegheresti uno shoot del BCB che usi tu cosi vedo com'è?  
sai darmi qualche consiglio?
Originariamente inviato da Luc@s 
[B]
Si ma il BCB costa, e a skarikarlo (in bolletta perche ho una ISDN) siamo li.
Almeno ce fosse na versione personal (come per il JBuilder 5) gratuita da skarikare:rolleyes: :rolleyes: 
P.S: allegheresti uno shoot del BCB che usi tu cosi vedo com'è? 
io non le ho pagate, le ho trovate come allegato su di una rivista in edicola
dapprima la versione 1.0 e ne ero restio in quanto mi sembrava che mascherasse troppo il codice, in pratica mi sentivo come se il programma lo stesse scrivendo Borland
poi, facendoci l'abitudine, mi sono accorto che non era proprio così
il motore della tua applicazione lo scrivi tu, come più ti piace ed il discorso dell'interfaccia viene messo in secondo piano, intanto gira e rigira è sempre la stessa minestra
seconda botta di fortuna, ho trovato sempre con la medesima rivista, dopo qualche tempo, la versione 4.0: per i mie scopi è ancora ottima
oggi i programmi hanno raggiunto una complessità tale, interfacce comprese, che purtroppo non ti permettono di seguire per intero tutto il funzionamento del codice, pazienza
chiaramente il discorso cambia se ti ritrovi a lavorare alla Microsoft ad esempio, ma anche qui, non ne sarei così sicuro
la parola d'ordine d'oggi è produttività: termine portato all'esasperazione
ed allora adeguiamoci usando tutto ciò che è bello, pronto e stra-testato, ed hai più tempo per pensare al motore;)
Originariamente inviato da Luc@s 
[B]sai darmi qualche consiglio? 
Non uso BCB...ma prima di cimentarti nella programmazione per Windows con BCB imparati a dovere il C++...
winbase.h (basta anche windows.h)
kernel32.lib
ma era IoProgrammo??????
P.S: sono curioso di vedere lo shoot, lo allegeresti?????? tnk per il tempo perso:D 
P.P.S: che scuola superiore hai fatto?
Originariamente inviato da Luc@s 
[B]ma era IoProgrammo??????
P.S: sono curioso di vedere lo shoot, lo allegeresti?????? tnk per il tempo perso:D 
P.P.S: che scuola superiore hai fatto? 
Computer Magazine
questo dovrebbe soddisfare la tua curiosità però: dai retta ai consigli di cionci se stai ancora studiando;) 
http://bcb-tools.com/TDx_Library/Tutorials/HowItWorks.htm
ah ed era gratis????????? la 6(l'ultima )nn lo è e la 4 nn c'è sul sito Borland:(:(:
P.S: che scuola superiore hai fatto?
Originariamente inviato da Luc@s 
[B]ah ed era gratis????????? la 6(l'ultima )nn lo è e la 4 nn c'è sul sito Borland:(:(:
P.S: che scuola superiore hai fatto? 
in edicola non sul sito; leggi il mio post sopra, hai un link
la mia scuola superiore non ha nulla a che vedere con l'informatica; ho studiato meccanica
l'informatica è solo per me una passione, che mi serve anche nel mondo del lavoro e che trattato con la stessa serietà di chi la studia nelle scuole:)
DanieleC88
04-07-2002, 21:01
Originariamente inviato da magomerlinopaolo 
[B]io i file ini li considero anche migliori del registro in quanto quest' ultimo è già pieno di porcherie, poi non ci vuole niente a correggere un file .ini a mano... 
Giusto, io li uso sempre. Il registro di configurazione, soprattutto per i meno esperti, si riempie velocemente e si svuota troppo lentamente... inconveniente... (rima!)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.