/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
ini filer
Fra : Jan Larsen


Dato : 24-11-01 22:29

Hej

Hvordan læser/skriver man fra/til ini filer.
Jeg bruger Borland Builder5 på win98.
Gerne et eks.
Håber nogle kan hjælpe

Mvh
Jan



 
 
Mogens Hansen (25-11-2001)
Kommentar
Fra : Mogens Hansen


Dato : 25-11-01 16:11


"Jan Larsen" <jan_l@post12.tele.dk> wrote in message
news:3c0103cf$0$750$edfadb0f@dspool01.news.tele.dk...

>
> Hvordan læser/skriver man fra/til ini filer.

Med funktionerne

GetProfileString (og GetProfile...)
WriteProfileString (og WriteProfile...)
GetPrivateProfileString (og GetPrivateProfile...)
WritePrivateProfileString (og WritePrivateProfile...)

Se online hjælpesystemet for beskrivelse af de enkelte funktioner.

Microsoft anbefaler at man ikke bruger dem, men istedet gemmer informationen
i registry.
Jeg er _ikke_ enig i deres anbefaling, og der er tegn i Windows XP på at de
heller ikke længere selv er det.

Venlig hilsen

Mogens Hansen



Ivan Johansen (25-11-2001)
Kommentar
Fra : Ivan Johansen


Dato : 25-11-01 18:11

Jan Larsen wrote:

> Hvordan læser/skriver man fra/til ini filer.
> Jeg bruger Borland Builder5 på win98.
> Gerne et eks.

Som Mogens skrev kan du vælge at anvende funktionerne i Windows API. Et
alternativ er at anvende Borlands klasse TIniFile. Følgende eksempel
stammer direkte fra Borlands dokumentation:

void __fastcall TForm1::TForm1(TObject *Sender)

{
TIniFile *ini;
ini = new TIniFile(
ChangeFileExt( Application->ExeName, ".INI" ) );
Top = ini->ReadInteger( "Form", "Top", 100 );
Left = ini->ReadInteger( "Form", "Left", 100 );
Caption = ini->ReadString( "Form", "Caption",
"Default Caption" );
ini->ReadBool( "Form", "InitMax", false ) ?
WindowState = wsMaximized :
WindowState = wsNormal;
delete ini;

}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
ini->WriteInteger( "Form", "Top", Top );
ini->WriteInteger( "Form", "Left", Left );
ini->WriteString ( "Form", "Caption", Caption );
ini->WriteBool ( "Form", "InitMax",
WindowState == wsMaximized );
delete ini;
}

Du kan finde mere information under TIniFile i dokumentationen. På trods
af at Microsoft ikke mener at man skal bruge ini-filer, mener jeg at de
stadig kan bruges til meget godt.

Jeg håber at du kan bruge det.

Ivan Johansen


Jan Larsen (25-11-2001)
Kommentar
Fra : Jan Larsen


Dato : 25-11-01 22:05


Tak for svarene, men kunne i ikke komme med nogle eks. er lidt ny i C++.

[section]
key=2

Prøv at bruge dette.
Håber nogle vil hjælpe

Mvh Jan





Ivan Johansen (25-11-2001)
Kommentar
Fra : Ivan Johansen


Dato : 25-11-01 22:28

Jan Larsen wrote:

> Tak for svarene, men kunne i ikke komme med nogle eks. er lidt ny i C++.
>
> [section]
> key=2

Okay, følgende vil læse en fil med dit eksempel. Default-værdien (her 0)
returneres, hvis key ikke kan findes i section.

TIniFile *IniFile = new TIniFile("MyFile.ini");
int Value = IniFile->ReadInteger("section", "key", 0);
delete IniFile;

Følgende skriver en fil:

TIniFile *IniFile = new TIniFile("MyFile.ini");
IniFile->WriteInteger("section", "key", Value);
delete IniFile;

Bemærk at du først skal #include <inifiles.hpp>

Jeg håber at du kan bruge det.

Ivan Johansen


Jan Larsen (25-11-2001)
Kommentar
Fra : Jan Larsen


Dato : 25-11-01 23:48

Hvis jeg prøver dette

TIniFile *IniFile = new TIniFile("MyFile.ini");
int Value = IniFile->ReadInteger("section", "key", 0);
delete IniFile;

lader det til der bliver kigget i win.ini og ikke MyFile.ini ?????
HJÆLP

Mvh Jan

Ivan Johansen <NG@Padowan.dk> skrev i en
nyhedsmeddelelse:3C01627D.90206@Padowan.dk...
> Jan Larsen wrote:
>
> > Tak for svarene, men kunne i ikke komme med nogle eks. er lidt ny i C++.
> >
> > [section]
> > key=2
>
> Okay, følgende vil læse en fil med dit eksempel. Default-værdien (her 0)
> returneres, hvis key ikke kan findes i section.
>
> TIniFile *IniFile = new TIniFile("MyFile.ini");
> int Value = IniFile->ReadInteger("section", "key", 0);
> delete IniFile;
>
> Følgende skriver en fil:
>
> TIniFile *IniFile = new TIniFile("MyFile.ini");
> IniFile->WriteInteger("section", "key", Value);
> delete IniFile;
>
> Bemærk at du først skal #include <inifiles.hpp>
>
> Jeg håber at du kan bruge det.
>
> Ivan Johansen
>





Jan Larsen (26-11-2001)
Kommentar
Fra : Jan Larsen


Dato : 26-11-01 00:28

Problemet er at min ini fil ligger og skal ligge på D:\ men

TIniFile *IniFile = new TIniFile("D:\MyFile.ini");
int Value = IniFile->ReadInteger("section", "key", 0);
delete IniFile;
virker ikke.
ligger min ini fil i c:\windows virker det.
Hjælp

Mvh Jan

Jan Larsen <jan_l@post12.tele.dk> skrev i en
nyhedsmeddelelse:3c017662$0$89856$edfadb0f@dspool01.news.tele.dk...
> Hvis jeg prøver dette
>
> TIniFile *IniFile = new TIniFile("MyFile.ini");
> int Value = IniFile->ReadInteger("section", "key", 0);
> delete IniFile;
>
> lader det til der bliver kigget i win.ini og ikke MyFile.ini ?????
> HJÆLP
>
> Mvh Jan
>
> Ivan Johansen <NG@Padowan.dk> skrev i en
> nyhedsmeddelelse:3C01627D.90206@Padowan.dk...
> > Jan Larsen wrote:
> >
> > > Tak for svarene, men kunne i ikke komme med nogle eks. er lidt ny i
C++.
> > >
> > > [section]
> > > key=2
> >
> > Okay, følgende vil læse en fil med dit eksempel. Default-værdien (her 0)
> > returneres, hvis key ikke kan findes i section.
> >
> > TIniFile *IniFile = new TIniFile("MyFile.ini");
> > int Value = IniFile->ReadInteger("section", "key", 0);
> > delete IniFile;
> >
> > Følgende skriver en fil:
> >
> > TIniFile *IniFile = new TIniFile("MyFile.ini");
> > IniFile->WriteInteger("section", "key", Value);
> > delete IniFile;
> >
> > Bemærk at du først skal #include <inifiles.hpp>
> >
> > Jeg håber at du kan bruge det.
> >
> > Ivan Johansen
> >
>
>
>
>



Mogens Hansen (26-11-2001)
Kommentar
Fra : Mogens Hansen


Dato : 26-11-01 06:37


"Jan Larsen" <jan_l@post12.tele.dk> wrote in message
news:3c017f51$0$737$edfadb0f@dspool01.news.tele.dk...
> Problemet er at min ini fil ligger og skal ligge på D:\ men
>
> TIniFile *IniFile = new TIniFile("D:\MyFile.ini");

Du skal skrive \\ i stedet for \.
Altså
TIniFile *IniFile = new TIniFile("D:\\MyFile.ini");

Venlig hilsen

Mogens Hansen



Jan Larsen (26-11-2001)
Kommentar
Fra : Jan Larsen


Dato : 26-11-01 15:43

Ja selvfølelig
1000 tak for hjælpen.

Mvh Jan

Mogens Hansen <mogens_h@dk-online.dk> skrev i en
nyhedsmeddelelse:9tsk7q$2oaq$1@news.cybercity.dk...
>
> "Jan Larsen" <jan_l@post12.tele.dk> wrote in message
> news:3c017f51$0$737$edfadb0f@dspool01.news.tele.dk...
> > Problemet er at min ini fil ligger og skal ligge på D:\ men
> >
> > TIniFile *IniFile = new TIniFile("D:\MyFile.ini");
>
> Du skal skrive \\ i stedet for \.
> Altså
> TIniFile *IniFile = new TIniFile("D:\\MyFile.ini");
>
> Venlig hilsen
>
> Mogens Hansen
>
>



Jan Larsen (26-11-2001)
Kommentar
Fra : Jan Larsen


Dato : 26-11-01 18:22

Og vis ini filen ligger i samme mappe som exe filen, men jeg ved ikke på
forhånd, hvor folk vil installer mit program...
Hvordan klare jeg dette???

Mvh Jan






Claus Nielsen (26-11-2001)
Kommentar
Fra : Claus Nielsen


Dato : 26-11-01 19:42

>Og vis ini filen ligger i samme mappe som exe filen, men jeg ved ikke på
>forhånd, hvor folk vil installer mit program...
>Hvordan klare jeg dette???

String ProgramSti = ExtractFilePath(Application->ExeName);

Application->ExeName er en variabel der indeholder den absolutte sti
inklusiv filnavn på det programmet. ExtractFilePath er en funktion der
skræller filnavnet af, og returnerer stinavnet. Voila.

Eller hvis du din INI fil hedder det samme som din EXE fil, så kan du
gøre sådan her:

String IniFilNavn = ChangeFileExt(Application->ExeName, ".ini");

Mvh, Claus
--
e-mail: cnn@post6.tele.dk
homepage: http://home6.inet.tele.dk/cnn

Jan Larsen (26-11-2001)
Kommentar
Fra : Jan Larsen


Dato : 26-11-01 21:54

Mange tak
Mvh Jan
Claus Nielsen <cnn@post6.tele.dk> skrev i en
nyhedsmeddelelse:ks250u87dqqrficl6lr6hd4hoeiom7seat@4ax.com...
> >Og vis ini filen ligger i samme mappe som exe filen, men jeg ved ikke på
> >forhånd, hvor folk vil installer mit program...
> >Hvordan klare jeg dette???
>
> String ProgramSti = ExtractFilePath(Application->ExeName);
>
> Application->ExeName er en variabel der indeholder den absolutte sti
> inklusiv filnavn på det programmet. ExtractFilePath er en funktion der
> skræller filnavnet af, og returnerer stinavnet. Voila.
>
> Eller hvis du din INI fil hedder det samme som din EXE fil, så kan du
> gøre sådan her:
>
> String IniFilNavn = ChangeFileExt(Application->ExeName, ".ini");
>
> Mvh, Claus
> --
> e-mail: cnn@post6.tele.dk
> homepage: http://home6.inet.tele.dk/cnn



Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste