Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi INI-Dateien (https://www.delphipraxis.net/28903-ini-dateien.html)

Hansa 1. Sep 2004 02:29


INI-Dateien
 
Hi,

ich will eine INI-Datei erstellen. Bei folgendem Statement :

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var Ini: TIniFile;
begin
  Ini := TIniFile.Create ('\8.0\TEST.INI' );
kommt der Fehler : "Ungültiges Zeichen in Eingabedatei ($0A)". Wenn ich das richtig sehe ist das ein LF. Was soll das ? :twisted:

Luckie 1. Sep 2004 02:31

Re: INI-Dateien
 
Hast du den Code von irgendwo kopiert?

Hansa 1. Sep 2004 02:41

Re: INI-Dateien
 
Aus der Delphi-Hilfe. :mrgreen: Sag nur, daß die in der Hilfe noch Fallen einbauen ? :shock:

Luckie 1. Sep 2004 03:18

Re: INI-Dateien
 
Dann wird da noch ein LF drinne sein, was du natürlich nicht siehst.

Hansa 1. Sep 2004 11:53

Re: INI-Dateien
 
Ich habe das jetzt von Hand eingetippt und fertig. Das geht jetzt so weit. Die INI wird jetzt angelegt und es steht das gewünschte drin. Wenn ich das aber nun den Benutzer machen lassen will, ungefähr so :

Delphi-Quellcode:
  public
    { Public-Deklarationen }
    Ini: TIniFile;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Ini := TIniFile.Create('TEST.INI');
  try
  finally
    Ini.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Ini.WriteInteger( 'Zahlengrenzen', 'min',StrToInt (lblIntEdit1.Text));
  Ini.WriteInteger( 'Zahlengrenzen', 'max1',StrToInt (lblIntEdit2.Text));
  Ini.WriteInteger( 'Zahlengrenzen', 'max2',StrToInt (lblIntEdit3.Text));
end;
dann kommt eine Zugriffsverletzung. Ich nehme an, es liegt an der Ini Deklaration, sehe aber nicht was verkehrt ist. 8)

Noinini 1. Sep 2004 12:04

Re: INI-Dateien
 
Hi Hansa,

kann es sein, dass in den Edit-Feldern keine Integer-Werte drin stehen?
Sicherheitshalber solltest Du vielleicht ein try .. except drum herum basteln oder einfach StrToIntDef benutzen.
Ansonsten: Wann genau kommt denn die Zugriffsverletzung?

Gruß

Iris

Matze 1. Sep 2004 12:06

Re: INI-Dateien
 
Du darfst die Ini erst freigeben, wenn du sie nicht mehr benötigst, sprich,

- Ini erstellen (Create)
- in Ini schreiben/aus ihr lesen...
- Speicher freigeben (Free)

Hansa 1. Sep 2004 12:14

Re: INI-Dateien
 
Danke für den Versuch. Aber aus dem Quelltext (ich denke man soll den immer zeigen ? :gruebel: ) geht eindeutig alles nötige hervor. Natürlich steht in den Edits ein Text drin. Aber diesen wandele ich mit StrToInt ja in einen integer um.

Der Fehler ist auch klar zu sehen : Wenn ich im Finally Abschnitt des Create ein Ini.Free mache, dann ist wohl klar wo der Fehler herkam. :lol:

Das ist wieder mal ein klassischer Fall dafür, daß mit C+P alleine kein anständiges Programm zu machen ist. :mrgreen:

Es kommen aber bestimmt noch mehr Fragen. Deshalb habe ich den Titel ziemlich allgemein gewählt.

S2B 1. Sep 2004 12:20

Re: INI-Dateien
 
Zitat:

Zitat von Hansa
Es kommen aber bestimmt noch mehr Fragen. Deshalb habe ich den Titel ziemlich allgemein gewählt.

Klick einfach mal hier!:mrgreen:

Noinini 1. Sep 2004 12:37

Re: INI-Dateien
 
:wall: Stimmt. Wer lesen kann ist klar im Vorteil!
Das free da oben hatte ich total überlesen.

Hansa 1. Sep 2004 12:39

Re: INI-Dateien
 
Ach, da war das Tuto. 8) Das ist aber auch nicht viel mehr, als die Delphi-Hilfe. Der Free-Fehler wäre damit auch aufgetaucht. :lol:

Folgende Fragen sind noch aufgetaucht :

1. Kann man einen Kommenatar hinter den Werten angeben ? erledigt : mit ; (gibt ja nicht nur meine INI 8) )
2. Wie wird die Reihenfolge ermittelt ? Ich habe festgestellt, daß wenn ich zuerst y und dann x reinschreibe, dann steht da drin z.B.:

y=2
x=2

Wenn ich aber max1 und max nehme, dann steht max vor max1. :gruebel:

3. Sofern die Datei fertig ist, wie verwende ich sie dann am besten ? Soll ich eine Stringlist verwenden, oder einzelne Variablen, um die Werte aufzunehmen ? Wie machen das die anderen ?

fiasko 1. Sep 2004 12:49

Re: INI-Dateien
 
Zitat:

Zitat von Hansa
1. Kann man einen Kommenatar hinter den Werten angeben ?

Nö. Wozu sollte das gut sein? Normalerweise muß der Nutzer doch da nicht selber mit dem notepad rann :-)

Zitat:

Zitat von Hansa
2. Wie wird die Reihenfolge ermittelt ?

k.A. aber das Auslesen der INI-Datei ist doch gänzlich unabhängig von der Reihenfolge der Werte-Paare?!

Zitat:

Zitat von Hansa
3. Sofern die Datei fertig ist, wie verwende ich sie dann am besten ? Soll ich eine Stringlist verwenden, oder einzelne Variablen, um die Werte aufzunehmen ? Wie machen das die anderen ?

Hä? Wie meinsten du das? Üblicherweise ließt man die Datei irgendwann mal ein und speichert die Werte in Konfigurationsvariablen (und gibt die INI wieder frei).

Matze 1. Sep 2004 12:50

Re: INI-Dateien
 
Welche Reihenfolge?

In der Reihenfolge, in der du's huneinschreibst, steht's in der Datei.

Steve 1. Sep 2004 12:50

Re: INI-Dateien
 
Zitat:

Zitat von Hansa
3. Sofern die Datei fertig ist, wie verwende ich sie dann am besten ? Soll ich eine Stringlist verwenden, oder einzelne Variablen, um die Werte aufzunehmen ? Wie machen das die anderen ?

Die Frage versteh ich irgendwie nicht...
Das hängt doch einzig und allein davon ab, wofür/wie Du die ini benutzt, also sozusagen, was Du da warum reinschreibst. :gruebel:

Gruß
Stephan

alcaeus 1. Sep 2004 12:54

Re: INI-Dateien
 
Hi Hansa!

Wenn ich dich richtig verstehe, dann willst du wissen wie du die Werte aus der ini während der Programmausführung speichern sollst?
Ich empfehle, beim Start alle Werte aus der ini auszulesen und diese in Variablen abzuspeichern. Anschließend kannst du die ini-Datei wieder freigeben. Beim Beenden des Programms schreibst du dann alle Werte zurück in die ini.
Ich rate dir aber Grundsätzlich davon ab, die ini-Datei während der gesamten Ausführung geöffnet zu haben, unter Win gibt es immer wieder Probleme wenn ein Programm abstürzt und die Datei noch nicht freigegeben war.

Greetz
alcaeus

Hansa 1. Sep 2004 12:56

Re: INI-Dateien
 
Editieren hat anscheinend keinen Sinn, ihr seid zu schnell. :lol:

Also : Kommentare gehen mit ;

Daß ein Kommentar unnötig ist, das habe ich jetzt aber noch nie gehört. :shock: Identifier sollten zwar immer aussagekräftige Namen haben, aber das hindert einen doch nicht daran, seine Ideen etwas ausführlicher zusätzlich zu kommentieren. Ich habe Prozeduren von ca. 10 Zeilen und da steht fast eine Seite Kommentar dabei. Warum soll das, was im normalen Source richtig ist, bei INIs plötzlich überflüssig sein ? :bouncing4:

Leuselator 1. Sep 2004 12:58

Re: INI-Dateien
 
Hansa, alter Schlawiener - neue Frage, neuer Thread - denk doch mal an die Suchfunktion...
Gruß

Hansa 1. Sep 2004 13:08

Re: INI-Dateien
 
Was neue Frage, neuer Thread ? :shock: Erstens war die 3. Frage, wie ich die INI am besten benutze überflüssig. :lol: Wie Kommentar geht, habe ich geschrieben. Bleibt noch die Reihenfolge übrig und da habe ich mich nur vertan. :mrgreen:

insofern: Thread ERLEDIGT !

teebee 2. Sep 2004 15:09

Re: INI-Dateien
 
Zitat:

Zitat von alcaeus
Ich rate dir aber Grundsätzlich davon ab, die ini-Datei während der gesamten Ausführung geöffnet zu haben, unter Win gibt es immer wieder Probleme wenn ein Programm abstürzt und die Datei noch nicht freigegeben war.

Die TIniFile-Klasse verwaltet lediglich den Filenamen für die Ini-Datei. D.h. es wird keine Datei geöffnet. Die Zugriffe auf die Ini erfolgen intern über die entsprechenden API-Aufrufe (Read/WritePrivateProfileString), dabei gibt es keine File-Handles o.ä., die geöffnet bleiben könnten. Ist also halb so wild.

Gruß, teebee

Hansa 2. Sep 2004 16:34

Re: INI-Dateien
 
So einfach geht es aber nicht !


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz