Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Inifile Problem (https://www.delphipraxis.net/184172-inifile-problem.html)

Maximum 4. Mär 2015 22:39

Inifile Problem
 
N'Abend alle zusammen,
ich hab nen Problem mit meiner Prozedure, ich will mit ihr die Werte und Schlüssel einer bestimmten Sektion auslesen, leider scheint das nicht so ganz zu funktionieren, da er bei der Ausgabe des Arrays nichts angibt und beim zählen der Strings "0" ausgibt...
Ich hoffe echt ihr könnt mir helfen, sitz schon ne Weile an dem Problem und bin zu blöd den Fehler zu finden ^^'
Code:
unit ULoad2;

interface

uses SysUtils,StdCtrls, ExtCtrls,FileCtrl, Classes, Graphics, Controls, Forms,IniFiles, Dialogs;
type tladen= array[1..365] of Integer;
     tladend= array[1..365] of TDate;
function GetApplicationDirectory: string;
function loadfileb(n:string; i:TDate):tladen;

var
helpb:tladen;
helpd:tladend;
h: integer;
implementation

function GetApplicationDirectory: string;
begin
  GetApplicationDirectory := ExtractFilePath(ParamStr(0));
end;

function loadfileb(n:string; i:TDate):tladen;
var Ini: TIniFile;
  dir, help, d,B,K,U:string;
  sl,helpf : TStringList;
  j,zaehler,l: integer;
begin
  dir:=GetApplicationDirectory+n;
  sl:=TStringlist.Create;
  helpf:=TStringlist.Create;
  try
    Ini:=TIniFile.Create(dir+n+'.ini'); //Datei in Stringliste laden
    ini.ReadSectionValues('BMI', sl);
    j:= sl.Count;
    Ini.ReadSectionValues('BMI', helpf);
    h:=helpf.Count;
  finally
   Ini.Free;
   sl.Free;
  end;
end;

end.
MfG Maximum

Dalai 4. Mär 2015 22:51

AW: Inifile Problem
 
Zitat:

Zitat von Maximum (Beitrag 1292377)
[...] da er bei der Ausgabe des Arrays nichts angibt

Bei der Ausgabe welches Arrays?

Zitat:

[...] und beim zählen der Strings "0" ausgibt...
Ich nehme an, damit meinst du helpf.Count? Bist du mal mit F7 durch die Funktion gesteppt und hast dir angeschaut, welche Werte deine Variablen so haben? Was wird überhaupt in die Funktion reingegeben als Parameter?

Noch ein paar andere Dinge:
  • Vermeide globale Variablen
  • Funktionen haben Rückgabewerte. Soll eine Funktion nichts zurückgeben, sollte man stattdessen eine procedure daraus machen (der Compiler dürfte übrigens darauf hingewiesen haben mit "Der Rückgabewert von Funktion loadfileb könnte undefiniert sein")
  • Deine Variable helpf wird zwar erzeugt, aber nicht wieder zerstört -> Speicherleck.

MfG Dalai

Luckie 5. Mär 2015 00:31

AW: Inifile Problem
 
j und h werden auch nicht benutzt. Warum die Zuweisung, wenn du sie doch nicht benutzt?

Der Compiler sollte dir ein paar Warnungen um die Ohren hauen.

Maximum 5. Mär 2015 05:43

AW: Inifile Problem
 
Vielen Dank für die schnellen Antworten und dafür das ihr euch die Zeit nehmt mir zu helfen :)

Zitat:

Bei der Ausgabe welches Arrays?
Bei der Ausgabe von helpf, diese fand in einer anderen Unit statt, hab die Unit seitdem schon ein paar mal umgeschrieben um zu kucken woran es liegen könnte, weshalb das nicht mehr zu erkennen ist :oops:

Zitat:

Ich nehme an, damit meinst du helpf.Count? Bist du mal mit F7 durch die Funktion gesteppt und hast dir angeschaut, welche Werte deine Variablen so haben?
Um ehrlich zu sein, wusst ich bisher noch nichtmal, dass das geht :oops: bin noch nicht so geübt im umgang mit Delphi...

Zitat:

Was wird überhaupt in die Funktion reingegeben als Parameter?
Ähm n ist ein Name, der wird gebraucht um auf das Verzeichnis der Datei zuzugreifen, da es sich um mehrere Inidateien handelt, welche jeweils in einen bestimmten Ordner gespeichert werden. Und i ist das Datum, was eigendlich auch schonwieder überflüssig ist, aufgrund von überarbeitungen meinerseits :oops:

Zitat:

j und h werden auch nicht benutzt. Warum die Zuweisung, wenn du sie doch nicht benutzt?
j und h werden in einer anderen Unit aufgerufen, weshalb ich sie auch global deklariert habe.

baumina 5. Mär 2015 07:36

AW: Inifile Problem
 
Du füllst deine Arrays nirgends, deswegen sind diese leer. Du füllst nur 2 Stringlisten und diese müssten Inhalt haben, allerdings nur innerhalb der Funktion loadfileb, da diese Variablen dort lokal sind.

p80286 5. Mär 2015 11:24

AW: Inifile Problem
 
Zitat:

Zitat von Maximum (Beitrag 1292385)

Zitat:

j und h werden auch nicht benutzt. Warum die Zuweisung, wenn du sie doch nicht benutzt?
j und h werden in einer anderen Unit aufgerufen, weshalb ich sie auch global deklariert habe.

das gewöhn dir bitte ganz schnell ab. Zum einen sind die Namen so aussagekräftig daß man immer einen Kontext benötigt um zu wissen wofür sie gut sind, zum anderen gibt es nur ganz ganz.......ganz selten den Fall, daß innerhalb einer Funktion/Prozedur eine externe Variable benötigt wird. Wenn Du über die "offizelle" Schnittstelle (Parameter) die Daten übergibst, dann weißt Du innerhalb der Prozedur/Funktion eigentlich immer was Sache ist, und Du mußt nicht auf irgendwelche Nebeneffekte Rücksicht nehmen.

Gruß
K-H

himitsu 5. Mär 2015 11:36

AW: Inifile Problem
 
Außerdem steht in j und h genau das Selbe drin.
Nur weil es sinnlos mit unterschiedlichen TStringList ausgelesen wurde, so bleibt der Wert gleich, da es die selbe Quelle ist.

Auch die beiden anderen globalen Variablen kann man als falsch platziert betrachten, da sie ebenfalls nirgendwo benutzt werden.

Und warum das Alles überhaupt böse globale Variablen sind ... darüber könnte man auch noch streiten.

Dalai 5. Mär 2015 15:04

AW: Inifile Problem
 
Zitat:

Zitat von Maximum (Beitrag 1292385)
Zitat:

Bei der Ausgabe welches Arrays?
Bei der Ausgabe von helpf [...]

Das ist kein Array sondern eine TStringList.

Zitat:

Um ehrlich zu sein, wusst ich bisher noch nichtmal, dass das geht :oops: bin noch nicht so geübt im umgang mit Delphi...
Nun weißt du es ja und kannst es intensiv nutzen :).

Zitat:

Zitat:

Was wird überhaupt in die Funktion reingegeben als Parameter?
Ähm n ist ein Name, der wird gebraucht um auf das Verzeichnis der Datei zuzugreifen, [...]
Ich meinte eigentlich als Inhalt. Oder anders gefragt: Bist du sicher, dass der zusammengebaute Dateiname korrekt ist? Schließlich hängt davon ab, ob der nachfolgende Code so funktioniert, wie du das erwartest.

MfG Dalai

Maximum 5. Mär 2015 17:25

AW: Inifile Problem
 
Hallo allerseits^^
ich hab die Unit jetzt überarbeitet(die globalen Variablen sind jedoch noch vorhanden, möchte erstmal das alles funktioniert^^'),
aktuelles Ergebnis sieht so aus, das er die Arrays mit Daten bestückt, die Länge ist nun wie erwünscht "365", jedoch sind alle Werte = 0 also default.
Delphi-Quellcode:
unit ULoad2;

interface

uses SysUtils,StdCtrls, ExtCtrls,FileCtrl, Classes, Graphics, Controls, Forms,IniFiles, Dialogs;
type tladen= array[1..365] of Integer;
     tladend= array[1..365] of TDate;
function GetApplicationDirectory: string;
procedure loadfileb(n:string);

var
helpb:tladen;
helpd:tladend;
j: integer;
implementation

function GetApplicationDirectory: string;
begin
  GetApplicationDirectory := ExtractFilePath(ParamStr(0));
end;

procedure loadfileb(n:string);
var Ini: TIniFile;
  dir:string;
  sl: TStringList;
  l: integer;
begin
  dir:=GetApplicationDirectory+n;
  sl:=TStringlist.Create;
  Ini:=TIniFile.Create(dir+'\'+n+'.ini'); //Datei in Stringliste laden
  try
    ini.ReadSectionValues('BMI', sl);
    for l := 0 to sl.Count-1 do
  helpd[l] := StrToDate(sl.Names[l]);
  for l := 0 to sl.Count-1 do
  helpb[l] := Integer(sl.Objects[l]);
    j:= Length(helpb);
  finally
   Ini.Free;
   sl.Free;
  end;
end;

end.
Zitat:

Ich meinte eigentlich als Inhalt. Oder anders gefragt: Bist du sicher, dass der zusammengebaute Dateiname korrekt ist? Schließlich hängt davon ab, ob der nachfolgende Code so funktioniert, wie du das erwartest.
Ja ich bin mir zu 100% sicher, dass der Dateipfad richtig zusammengesetzt wird^^

Medium 5. Mär 2015 17:37

AW: Inifile Problem
 
Zitat:

Zitat von Maximum (Beitrag 1292511)
Delphi-Quellcode:
  dir:=GetApplicationDirectory+n;
  Ini:=TIniFile.Create(dir+'\'+n+'.ini'); //Datei in Stringliste laden
Ja ich bin mir zu 100% sicher, dass der Dateipfad richtig zusammengesetzt wird^^

Dann liegst du wahrscheinlich zu 100% falsch. Ich glaube kaum, dass das "n" dort wirklich zwei Mal dran soll.

Jumpy 5. Mär 2015 17:38

AW: Inifile Problem
 
Zitat:

Zitat von Maximum (Beitrag 1292511)
Ja ich bin mir zu 100% sicher, dass der Dateipfad richtig zusammengesetzt wird

Glaub ich dir jetzt mal, obwohl ich mich auch gewundert habe, dass das n 2x in den Pfad+dateinamen kommt.

Zum Problem, guck dir mal den Part an:

Delphi-Quellcode:
  ini.ReadSectionValues('BMI', sl);
  for l := 0 to sl.Count-1 do
    helpd[l] := StrToDate(sl.Names[l]);
  for l := 0 to sl.Count-1 do
    helpb[l] := Integer(sl.Objects[l]);
Du füllst in 2 Schleifen jeweils "helpd[l]:=". Damit überschreibst du beim 2x das, was du beim 1x reingeschrieben hast, ist das gewollt?

Davon ab scheint mir das "helpb[l] := Integer(sl.Objects[l]);" auch falsch, denn was soll in den Objekten drin sein, eigentlich doch nix, daher vllt. die 0 überall drin.

Du meintest wahrsch. sowas:
helpb[l] := Integer(sl.values[helpb[l]]);

BadenPower 5. Mär 2015 17:40

AW: Inifile Problem
 
Zitat:

Zitat von Maximum (Beitrag 1292511)
aktuelles Ergebnis sieht so aus, das er die Arrays mit Daten bestückt, die Länge ist nun wie erwünscht "365", jedoch sind alle Werte = 0 also default.

Wo werden denn die Arrays ausgelesen?

Zitat:

Zitat von Jumpy (Beitrag 1292515)
Du füllst in 2 Schleifen jeweils "helpd[l]:=". Damit überschreibst du beim 2x das, was du beim 1x reingeschrieben hast, ist das gewollt?

sind doch 2 verschiedene
"helpd[l]:="
"helpb[l]:="

Dalai 5. Mär 2015 17:40

AW: Inifile Problem
 
Ich kann mir kaum vorstellen, dass in
Delphi-Quellcode:
sl.Objects
irgendwas Sinnvolles drinsteht. Kann es sein, dass du
Delphi-Quellcode:
sl.Values
suchst?

Und noch eine Sache:
Delphi-Quellcode:
ExtractFilePath
liefert den Pfad inkl. abschließendem Pfadtrenner (bei Windows Backslash), d.h. du brauchst beim Zusammenbauen deines Dateinamens keinen Backslash einzufügen. Sinnvoller wäre die Verwendung der Funktion
Delphi-Quellcode:
IncludeTrailingPathDelimiter
(bzw. IncludeTrailingBackslash bei Delphi 5 und älter).

MfG Dalai

himitsu 5. Mär 2015 17:53

AW: Inifile Problem
 
Warum gibt GetApplicationDirectory den Path und nicht das Directory zurück?

Dir = ohne abschließendes \
Path = mit



Und für aktuellere Delphis: Delphi-Referenz durchsuchenTPath.Combine

Jumpy 6. Mär 2015 09:01

AW: Inifile Problem
 
Zitat:

Zitat von BadenPower (Beitrag 1292519)
Zitat:

Zitat von Jumpy (Beitrag 1292515)
Du füllst in 2 Schleifen jeweils "helpd[l]:=". Damit überschreibst du beim 2x das, was du beim 1x reingeschrieben hast, ist das gewollt?

sind doch 2 verschiedene
"helpd[l]:="
"helpb[l]:="

Das hab ich nicht gesehen, dass da einmal b und einmal p am Schluss steht. Ist dann aber in jedem Fall ein gutes Beispiel für eine schlechte "Benamsung".

Davon ab steht aber der Rest meines Posts noch, dass wahrscheinlich sl.Values statt sl.Objects verwendet werden sollte.

BadenPower 6. Mär 2015 09:14

AW: Inifile Problem
 
Zitat:

Zitat von Jumpy (Beitrag 1292569)
Das hab ich nicht gesehen, dass da einmal b und einmal p am Schluss steht.

:?::?::?:

Also ich sehe kein: p :-D:lol::spin2::coder2:

Jumpy 6. Mär 2015 11:35

AW: Inifile Problem
 
Zitat:

Zitat von BadenPower (Beitrag 1292572)
Zitat:

Zitat von Jumpy (Beitrag 1292569)
Das hab ich nicht gesehen, dass da einmal b und einmal p am Schluss steht.

:?::?::?:

Also ich sehe kein: p :-D:lol::spin2::coder2:

Das p steht vor dem b oder dem d, welches ich jetzt beim xten mal hingucken nun auch erkannt habe. Du kannst mir nicht zufällig ein Rezept für eine neue Brille aufschreiben :oops:

p80286 6. Mär 2015 11:37

AW: Inifile Problem
 
p b d
ist doch egal, Hauptsache lesbar!

Gruß
K-H

Maximum 6. Mär 2015 12:47

AW: Inifile Problem
 
Hallo Leute,
Erstmal ein großes Danke an alle die sich mit meinem Problem beschäftigen und versuchen mir zu helfen!
Ich hab mir eure Antworten angekuckt und Vorschläge ausprobiert(Backslash bleibt vorerst, da ich wie schon gesagt erstmal erreichen will, dass es funktioniert).
Folgendes kam dabei raus:
Delphi-Quellcode:
unit ULoad2;

interface

uses SysUtils,StdCtrls, ExtCtrls,FileCtrl, Classes, Graphics, Controls, Forms,IniFiles, Dialogs;
type tladenbmi= array[1..365] of String;
     tladendate= array[1..365] of TDate;
function GetApplicationDirectory: string;
procedure loadfileb(n:string);

var
helpbmi:tladenbmi;
helpdate:tladendate;
test: string;
implementation

function GetApplicationDirectory: string;
begin
  GetApplicationDirectory := ExtractFilePath(ParamStr(0));
end;

procedure loadfileb(n:string);
var Ini: TIniFile;
  dir:string;
  sl : TStringList;
  l:integer;
begin
  dir:=GetApplicationDirectory+n;
  sl:=TStringlist.Create;
  Ini:=TIniFile.Create(dir+'\'+n+'.ini'); //Datei in Stringliste laden
  try
    ini.ReadSectionValues('BMI', sl);
    for l := 0 to sl.Count-1 do
  begin
    helpdate[l]:=StrToDate(sl.Names[l]);
    helpbmi[l]:=sl.Values[DateToStr(helpdate[l])];
  end;
    test:= helpbmi[1];
  finally
   Ini.Free;
   sl.Free;
  end;
end;

end.
So nachdem ich nun test in einem Editfeld ausgebe bleibt dieses jedoch leer, verändert sich jedoch(Defaulttext:'Edit1'; nach Ausführung des Befehls:''; )
Ich weiß schonwieder echt nicht weiter. Ist mir echt peinlich, wie blöd ich mich anstell...

PS: Sorry das ich so unregelmäßig antworte, hab zur Zeit nicht viel Zeit.

Sir Rufo 6. Mär 2015 12:47

AW: Inifile Problem
 
Ich habe die Unit jetzt mal ein wenig umgeschrieben, auch wenn die Struktur der Daten immer noch nicht optimal ist ... aber das ist ja auch ein anderes Thema.
Delphi-Quellcode:
unit ULoad2;

interface

uses
  SysUtils,
  Classes,
  IniFiles;

type
  // ## INFO ##
  //
  // Zusammengehörende Informationen fassen wir auch zusammen

  // tladen = array [1 .. 365] of Integer;
  // tladend = array [1 .. 365] of TDate;

  TTagesWert = record
    Datum: TDate;
    Wert: Integer;
  end;

  TJahresWerte = array of TTagesWert;

  // ## INFO ##
  //
  // Statt irgendwelcher Magic Values, die überall im Code auftauchen
  // benutzen wir Konstanten

const
  PATH_SEPARATOR = '\';
  DATA_DIRECTORY_NAME = 'Data';
  BMIFILE_EXTENSION = '.ini';
  BMIFILE_BMI_SECTIONNAME = 'BMI';

function GetApplicationDirectory: string;

// ## INFO ##
//
// DRY - **D**on't **R**epeat **Y**ourself
//
// Niemals an irgendwelchen Stellen den gleichen Code mit der gleichen Bedeutung
// doppelt schreiben. Diese Teile werden ausgelagert und bekommen sprechende
// Namen.

function GetDataDirectory: string;
function GetDataFileName( const AName: string ): string;

// procedure loadfileb( n: string );
function LoadBmiFileData( const AName: string ): TJahresWerte;
procedure SaveBmiFileData( const AName: string; AData: TJahresWerte );

// ## INFO ##
//
// Globale Variablen müssen nicht sein und sind mehr BÖSE als nützlich

// var
// helpb: tladen;
// helpd: tladend;
// j: Integer;

implementation

function GetApplicationDirectory: string;
begin
  // ## INFO ##
  //
  // Wenn wir das Verzeichnis möchten, dann müssen wir uns auch das Verzeichnis
  // holen und nicht den Pfad

  // GetApplicationDirectory := ExtractFilePath( ParamStr( 0 ) );
  GetApplicationDirectory := ExtractFileDir( ParamStr( 0 ) );
end;

function GetDataDirectory: string;
begin
  GetDataDirectory := GetApplicationDirectory + PATH_SEPARATOR + DATA_DIRECTORY_NAME;
end;

function GetDataFileName( const AName: string ): string;
begin
  GetDataFileName := GetDataDirectory + PATH_SEPARATOR + AName + BMIFILE_EXTENSION;
end;

// procedure loadfileb( n: string );
// var
// Ini: TIniFile;
// dir: string;
// sl: TStringList;
// l: Integer;
// begin
// dir := GetApplicationDirectory + n;
// sl := TStringList.Create;
// Ini := TIniFile.Create( dir + '\' + n + '.ini' ); // Datei in Stringliste laden
// try
// Ini.ReadSectionValues( 'BMI', sl );
// for l := 0 to sl.Count - 1 do
// helpd[l] := StrToDate( sl.Names[l] );
// for l := 0 to sl.Count - 1 do
// helpb[l] := Integer( sl.Objects[l] );
// j := Length( helpb );
// finally
// Ini.Free;
// sl.Free;
// end;
// end;

function LoadBmiFileData( const AName: string ): TJahresWerte;
var
  LBmiFileName: string;
  LBmiFile: TIniFile;
  LSectionNames: TStringList;
  LIdx: Integer;
begin
  LSectionNames := nil;
  LBmiFile := nil;
  try

    LBmiFileName := GetDataFileName( AName );
    LBmiFile := TIniFile.Create( LBmiFileName );

    LBmiFile.ReadSection(
      {Section} BMIFILE_BMI_SECTIONNAME,
      {Strings} LSectionNames );

    SetLength( Result, LSectionNames.Count );

    for LIdx := 0 to LSectionNames.Count - 1 do
      begin
        Result[LIdx].Datum := StrToDate( LSectionNames[LIdx] );
        Result[LIdx].Wert := LBmiFile.ReadInteger(
          {Section} BMIFILE_BMI_SECTIONNAME,
          {Ident} LSectionNames[LIdx],
          {Default} 0 );
      end;

  finally
    LSectionNames.Free;
    LBmiFile.Free;
  end;
end;

procedure SaveBmiFileData( const AName: string; AData: TJahresWerte );
var
  LBmiFileName: string;
  LBmiFile: TIniFile;
  LIdx: Integer;
begin
  LBmiFile := nil;
  try

    LBmiFileName := GetDataFileName( AName );
    LBmiFile := TIniFile.Create( LBmiFileName );

    LBmiFile.EraseSection( BMIFILE_BMI_SECTIONNAME );

    for LIdx := Low( AData ) to High( AData ) do
      begin
        LBmiFile.WriteInteger(
          {Section} BMIFILE_BMI_SECTIONNAME,
          {Ident} DateToStr( AData[LIdx].Datum ),
          {Value} AData[LIdx].Wert );
      end;

  finally
    LBmiFile.Free;
  end;
end;

end.

Medium 6. Mär 2015 13:47

AW: Inifile Problem
 
Ich vermute nach wie vor hier den zumindest ersten Fehler, zumal der TE bisher nicht weiter darauf einging, abgesehen von der richtigen Änderung zu "-Dir" statt "-Path" in diesem Fall:
Delphi-Quellcode:
  dir:=GetApplicationDirectory+n;
  Ini:=TIniFile.Create(dir+'\'+n+'.ini');
Mal in Prosa. GetApplicationDirectory() liefert vermutlich etwas dieser Art zurück:
C:\Projekte\MeinProgramm

Jetzt wird "n" dazu gepackt. Angenommen n = 'Hallo':
C:\Projekte\MeinProgrammHallo

Dann wird ein '\' und nochmals "n" sowie '.ini' drangehängt:
C:\Projekte\MeinProgrammHallo\Hallo.ini

SOLL DAS "HALLO" WIRKLICH AN DAS VERZEICHNIS GEPACKT WERDEN, TE!? Weil es wirkt auf mich so, als wäre das eine sehr seltsame Struktur.

Sir Rufo 6. Mär 2015 13:58

AW: Inifile Problem
 
@Medium

Du nimmst falsch an, denn in dem Quelltext vom TE steht
Delphi-Quellcode:
function GetApplicationDirectory: string;
begin
  GetApplicationDirectory := ExtractFilePath(ParamStr(0));
end;
Also wird dort etwas in der Art zurückgeliefert
Code:
C:\Foo\Blup\App\
Jetzt wird dort der Name angehängt
Delphi-Quellcode:
  dir:=GetApplicationDirectory + n;
  Ini:=TIniFile.Create( dir + '\' + n + '.ini' );
und wir erhalten
Code:
n => 'bmifoo'

dir => 'C:\Foo\Blup\App\bmifoo'
inifile => 'C:\Foo\Blup\App\bmifoo\bmifoo.ini'

himitsu 6. Mär 2015 14:24

AW: Inifile Problem
 
Zitat:

Zitat von Sir Rufo (Beitrag 1292639)
@Medium

Du nimmst falsch an, denn in dem Quelltext vom TE steht ...

Drum kam auch was von mir :angle2:

Zitat:

Zitat von himitsu (Beitrag 1292525)
Warum gibt GetApplicationDirectory den Path und nicht das Directory zurück?

Dir = ohne abschließendes \
Path = mit



Und für aktuellere Delphis: Delphi-Referenz durchsuchenTPath.Combine


Medium 6. Mär 2015 15:13

AW: Inifile Problem
 
Huaaaaaa, ich habe da doch echt ExtractFileDir() gelesen in seinem aktuellsten Schnipsel. Gut, dass gleich Wochenende ist. :stupid:
Nichtsdestotrotz bin ich nach wie vor skeptisch. Vor allem, weil TIniFile.Create() keine Exception auslöst, wenn man einen nicht existenten Pfad angibt. Vielleicht wäre es zum Testen vorläufig besser, wenn man den kompletten absoluten Pfad zu der INI als String am Stück im Code nimmt. Einfach um wirklich gaaaaanz sicher zu sein, dass da auch wirklich etwas gelesen werden kann. (Bisher haben wir ja nichtmal eine Bestätigung, dass die Schleifen überhaupt durchlaufen. Oder ob sl.Count beim Durchsteppen wirklich >0 ist. Ich glaube irgendwie noch nicht so recht, dass da überhaupt eine INI mit Inhalt geöffnet wird.

himitsu 6. Mär 2015 15:29

AW: Inifile Problem
 
Zitat:

Nichtsdestotrotz bin ich nach wie vor skeptisch.
Ich nicht, denn ich weiß warum das so ist. :angle:

Schau dir mal an was für eine API verwendet wird ... die öffnet für jeden einzelnen Value-Zugriff die INI, liest sie neu ein, ändert den Wert und speichert alles.
MSDN-Library durchsuchenWritePrivateProfileString
Wenn nichts im Contructor gemacht wird, außer sich den Dateinamen in einer Variable zu merken ... wo soll denn da ie Exception/Fehlerprüfung her kommen? :zwinker:

Delphi-Referenz durchsuchenTMemIniFile

Medium 6. Mär 2015 16:49

AW: Inifile Problem
 
Es wäre halt so unglaublich simpel, dies als Fehlerquelle ein für alle Male auszuschließen. Keine Minute Arbeit. Ich habe daher keine Lust mehr darüber zu streiten. Wenn der TE Bock hat, macht er's, wenn nicht dann nicht. Mir langsam pupsegal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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 by Thomas Breitkreuz