[Delphi] ini-file parameters probleempje

Pagina: 1
Acties:

  • cypher21
  • Registratie: November 2001
  • Laatst online: 09-02 10:02
ik ben bezig met een progseltje wat een ini-file genereerd. Dit gaat prima, alleen stuit ik op een probleempje. er is een regel in de ini-file dat zich niet als een standaard ini sectie laat schrijven.

code:
code:
1
2
3
4
5
while q < LstInstall.Items.Count do
    begin
      ini.WriteString('OEMRunOnce','"'+LstInstall.Items[q]+'","""\\TECHNICIAN\OPKaps\packages\'+LstInstall.Items[q]+'.exe"""','');
      q:=q+1;
    end;


uitvoer is nu:

[OEMRunOnce]
"NERO_551028","""\\TECHNICIAN\OPKaps\packages\NERO_551028.exe"""=
"powerdvd_4","""\\TECHNICIAN\OPKaps\packages\powerdvd_4.exe"""=

maar doordat die =jes aan het einde van de regel staan, voert ie dit niet uit. een parameter minder meegeven is helaas ook niet mogelijk.

iemand suggesties?

[ Voor 17% gewijzigd door cypher21 op 11-11-2003 15:26 ]

"me" is geen bezittelijk voornaamwoord! Terug naar de basisschool!


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 20-08 20:03

Knutselsmurf

LED's make things better

Een inifile bestaat altijd uit de combinatie key=value. Als je geen value invult, wordt deze blijkbaar genegeerd. Oplossing: Value meegeven.

- This line is intentionally left blank -


  • cypher21
  • Registratie: November 2001
  • Laatst online: 09-02 10:02
value meegeven is helaas niet mogelijk, zodra er ietsvoor of achter de regel staat, wordt die regel niet uitgevoerd

"me" is geen bezittelijk voornaamwoord! Terug naar de basisschool!


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 20-08 22:09

Delphi32

Heading for the gates of Eden

Ehm...
Komma tussen naampje en pad naar programma wijzigen in =-teken, vervolgens de routine die het programma moet starten de Value van elke key laten lezen (en niet de gehele regel). Niet zo moeilijk toch?

Verwijderd

Ik gebruik deze routine voor dit soort zaken (dit is lezen, maar schrijven is zo gemaakt):
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure ReadIniLines(IniName, SectionName : string; Lines : TStrings);
var
  f : textfile;
  line : string;
begin
  Lines.Clear;
  if fileexists(IniName) then
  begin
     try
       assignfile(f, IniName);
       reset(f);
       while not (eof(f)) do
       begin
          readln(f, line);
          if comparetext('[' + SectionName + ']', line) = 0 then // Vinden we de sectie?
             break; // Ja stoppen met zoeken
       end;
       while not eof(f) do
       begin
          readln(f, line);
          if (pos('[', line) > 0) and (pos(']',line) > 0) then // Nieuwe Sectie ??
              break; // Ja, onderbreken
          lines.Add(line);
       end;
     finally
       closefile(f);
     end;
  end;
end; {}

[ Voor 5% gewijzigd door Verwijderd op 11-11-2003 15:56 ]


  • cypher21
  • Registratie: November 2001
  • Laatst online: 09-02 10:02
Delphi32 schreef op 11 november 2003 @ 15:51:
Ehm...
Komma tussen naampje en pad naar programma wijzigen in =-teken, vervolgens de routine die het programma moet starten de Value van elke key laten lezen (en niet de gehele regel). Niet zo moeilijk toch?
dat is idd niet moeilijk nee, als het niet was dat Sysprep de ini in moet lezen voor een pre-installatie van Windows. ik was niet van plan sysprep opnieuw te coden :Y)

wat ik zat te denken, een ; is commentaar in een ini-file.

zou dit werken:
"powerdvd_4","""\\TECHNICIAN\OPKaps\packages\powerdvd_4.exe""";=

edit:

de kromme oplossing met de ; werkt :) niet echt netjes voor de code, maar what the hack, niemand leest die ini-files

topic kan op slot

[ Voor 21% gewijzigd door cypher21 op 11-11-2003 16:10 ]

"me" is geen bezittelijk voornaamwoord! Terug naar de basisschool!


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 20-08 22:09

Delphi32

Heading for the gates of Eden

Hm, nu begrijp ik waarom je niet met de standaard key=value kan werken... het is leuk dat je work-around werkt, maar eigenlijk gebruik je de verkeerde class om dit op te lossen. Je RunOnce bestandje (of hoe het heet) IS geen ini-file, moet je m ook niet als zodanig behandelen :)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 11 november 2003 @ 15:55:
Ik gebruik deze routine voor dit soort zaken (dit is lezen, maar schrijven is zo gemaakt):
Is dat niet gewoon de TIniFile.ReadSection?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Creepy schreef op 11 november 2003 @ 16:41:
[...]

Is dat niet gewoon de TIniFile.ReadSection?
euh, nee. Want die leest dus niet de keynames (lees gewone regels) in als er geen = achter staat. (TIniFile.ReadSection is eigenlijk een wrapper om de GetPrivateProfileString (windows api) heen).

[ Voor 22% gewijzigd door Verwijderd op 11-11-2003 17:04 ]

Pagina: 1