AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Inifile Problem

Ein Thema von Maximum · begonnen am 4. Mär 2015 · letzter Beitrag vom 6. Mär 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#1

AW: Inifile Problem

  Alt 5. Mär 2015, 15:04
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 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
  Mit Zitat antworten Zitat
Maximum

Registriert seit: 4. Mär 2015
4 Beiträge
 
Delphi 5 Standard
 
#2

AW: Inifile Problem

  Alt 5. Mär 2015, 17:25
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^^

Geändert von Maximum ( 5. Mär 2015 um 17:29 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Inifile Problem

  Alt 5. Mär 2015, 17:37
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#4

AW: Inifile Problem

  Alt 5. Mär 2015, 17:53
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
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#5

AW: Inifile Problem

  Alt 6. Mär 2015, 14:24
@Medium

Du nimmst falsch an, denn in dem Quelltext vom TE steht ...
Drum kam auch was von mir

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
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Inifile Problem

  Alt 6. Mär 2015, 15:13
Huaaaaaa, ich habe da doch echt ExtractFileDir() gelesen in seinem aktuellsten Schnipsel. Gut, dass gleich Wochenende ist.
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#7

AW: Inifile Problem

  Alt 6. Mär 2015, 15:29
Zitat:
Nichtsdestotrotz bin ich nach wie vor skeptisch.
Ich nicht, denn ich weiß warum das so ist.

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?

Delphi-Referenz durchsuchenTMemIniFile
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Inifile Problem

  Alt 5. Mär 2015, 17:38
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]]);
Ralph
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#9

AW: Inifile Problem

  Alt 5. Mär 2015, 17:40
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?

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]:="
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower ( 5. Mär 2015 um 17:42 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: Inifile Problem

  Alt 6. Mär 2015, 09:01
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.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 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