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