Toon posts:

[Delphi] Alle inifiles zijn ineens leeg

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mede tweakers,

Wat is het probleem:
Ik ben bezig met een programma, in dat programma worden een aantal vragen gesteld. Als de gebeurt is,
dan worden de resultaten op het beeld gezet, met een diagrammetje erbij enzo, ook kun je ze opslaan als Excel document.
Dit werkt allemaal goed. Maar zodra er wordt gekozen voor een nieuwe test kan het fout gaan.

Hoe heb ik het opgezet:
Ik het alle data die ik nodig heb in mijn programma in Ini files staan. Het is niet heel veel data en omdat
het programma simple moest blijven gebruik ik geen database of zoiets.
Ik lees de dingen die ik nodig heb in in een array.

Wat is het probleem:
Zodra er een Dialog (SaveDialog of OpenDialog) "geexecute" is. Zijn alle waarde die ik uit mijn ini file wil halen niet te vinden
(ze geven allemaal de default waarde terug).
Ik dacht eerst dat het probleem zat in het opslaan als Excel document, maar daar zit het niet in.

Wat heb ik geprobeerd:
Eerst ben ik gaan kijken waar het probleem precies zat. Ik kwam er dus achter dat het de Dialog kwam.
Ik heb zelfs een nieuwe SaveDialog op het form gesleept en een knopje. Met een onClick event aan het knopje
met daarin SaveDialog.Excute.
Het gaat pas mis als er op "opslaan" of "openen" wordt geklikt. Als ik nu iets doe van
ItemsIni.ReadString('groep''naam','fout'); dan zal er "fout" uit komen, terwijl het daarvoor wel werkte.
Als er op "annuleren" wordt geklikt dan werkt het gewoon.

Voorbeeld:
Ik heb het zelfs in een nieuw programma'tje geprobeerd. En dit heeft ook geen succes opgeleverd :<.
Test programma

Code:
Nou dit zijn de functies die in het voorbeeld programmatje zitten.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.Button1Click(Sender: TObject);
var
  ini : TIniFile;
begin
  ini := TIniFile.Create('./test.ini');
  try
    edit1.text := ini.ReadString('test','waarde','fout');
  finally
    ini.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  edit1.clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
  end;
end;


Ik gebruik Delphi 5.
Heeft iemand hier ook weleens last van gehad? En/of weet iemand hier misschien een oplossing voor??

Alvast bedankt

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Je verandert van pad als je SaveDialog.Execute doet.

Omdat je "./test.ini" gebruikt werkt dat niet.

Doe liever: extractfiledir(application.exename)+'test.ini';

Siditamentis astuentis pactum.


  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 22-12 14:56

lordsnow

I know nothing

Hoe groot zijn de INI files? Er is een limiet van 64kb op een INI.

Verwijderd

Topicstarter
Hartstikke bedankt,
dit werkt!!! (tot nu toe)

Maar mag ik misschien vragen waarom .\ niet werkt ??

Verwijderd

Topicstarter
Gelukkig zijn mijn ini files (nog) niet zo groot.

Er staat alleen een aantal titels en bestandslokaties in

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

.\ werkt niet omdat dat die current dir pakt...en die veranderd zoals al eerder gezegt als je SaveDialog gebruikt

We adore chaos because we like to restore order - M.C. Escher


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Je verandert van pad als je SaveDialog.Execute doet.
En "." is het huidige pad. Als je inifile c:\blabla\test.ini is, en je huidige directory is c:\ietsanders\ dan ga jij proberen c:\ietsanders\test.ini te openen, en dat gaat natuurlijk niet.

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
ik dacht (en zoals in de help file staat) dat die save/open dialog,
alleen de filename property zetten

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:49

Creepy

Tactical Espionage Splatterer

Je kan nooit echt uitgaan van de "current"directory, aangezien die aangepast kan worden door elk programma. Gewoon nooit uitgaan van de "current"directory, maar altijd van een absoluut pad m.b.v. o.a. application.exename en paramstr(0).

"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

Pagina: 1