PDA

View Full Version : I files INI


Luc@s
10-06-2002, 13:09
Scusate la mia ignoranza ma qualcuno sarebbe così gentile da spiegarmi che cosa sono e come funzionano i files *.ini?????

kingv
10-06-2002, 13:57
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

Luc@s
10-06-2002, 14:32
nn conosco Java( nn lo ho ancora fatto):(:(
Mi potresti spiegare come usarli con il C????????




Tnk per la risposta;)

kingv
10-06-2002, 14:38
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 ;)

Luc@s
10-06-2002, 15:04
e poi come li leggo ????????
ma sono scritti tipo cosi????????

[nome]
nomeprog="Mioprog"
[versione]
numero=0,7

Luc@s
10-06-2002, 19:01
ap................ cionci helpppppppppp

cionci
11-06-2002, 12:46
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

Luc@s
11-06-2002, 12:48
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...

cionci
11-06-2002, 17:37
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 :)

misterx
12-06-2002, 20:03
e pensare che in ambiente BCB sono di una facilità estrema da trattare; forse anche sin troppo

Luc@s
12-06-2002, 20:05
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:

cionci
12-06-2002, 20:07
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...

misterx
12-06-2002, 20:11
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;

Luc@s
12-06-2002, 20:16
ma BCB, è un linguaggio di programmazione?

cionci
12-06-2002, 20:29
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++...

Luc@s
12-06-2002, 20:39
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????????

misterx
12-06-2002, 20:45
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;)

Luc@s
12-06-2002, 20:49
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'è?

cionci
12-06-2002, 20:50
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);

Luc@s
12-06-2002, 20:53
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?

cionci
12-06-2002, 21:03
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);

Luc@s
12-06-2002, 21:08
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?

misterx
12-06-2002, 21:16
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;)

cionci
12-06-2002, 21:18
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

Luc@s
12-06-2002, 21:19
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?

misterx
12-06-2002, 21:24
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

misterx
12-06-2002, 21:30
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

Luc@s
12-06-2002, 21:30
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?

misterx
12-06-2002, 21:33
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:)

Luc@s
12-06-2002, 21:36
ottimo link;)

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!)