AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Immer Default-Wert bei Ini.ReadString
Thema durchsuchen
Ansicht
Themen-Optionen

Immer Default-Wert bei Ini.ReadString

Ein Thema von Mariaki · begonnen am 27. Feb 2010 · letzter Beitrag vom 28. Feb 2010
Antwort Antwort
Benutzerbild von Mariaki
Mariaki

Registriert seit: 21. Sep 2008
64 Beiträge
 
RAD-Studio 2010 Arc
 
#1

Immer Default-Wert bei Ini.ReadString

  Alt 27. Feb 2010, 20:59
Hi,
ich mache grade eine Update-Funktion für mein Prog..
Hier mal der Text mit dem Fehler:
Delphi-Quellcode:
var
  stream: TFileStream;
  reg: TRegistry;
  ini: Tinifile;
begin
  stream := TFileStream.Create('Version.ini', fmcreate);
  ini := Tinifile.Create('Version.ini');
  try
    FTPUpdate.Connect;
    FTPUpdate.Get('Version.ini', stream);
  finally
    FTPUpdate.Disconnect;
    stream.Free;
  end;
  try
    AEinst.OnVer := ini.ReadString('Version', 'Version', '');
    Showmessage(AEinst.OnVer);
  finally
    ini.Free;
  end;
.
.
.
Nun ließt er aba einfach nicht den Wert aus der Ini.
Die sieht so aus:
Code:
[Version]
Version=1_0_0_0
Herunterladen tut er sie auch.
D.h. der Fehler muss in
AEinst.OnVer := ini.ReadString('Version', 'Version', ''); sein. aber da kann man eigentlich nicht so viel falsch machen. Doch nimmt er immer den Alternativ-Wert (in meinem Fall '').
Findet jemand den Fehler.

Gruß Mariaki
Benedikt
Warum merken die ganzen Christen eigentlich nicht, dass Gott veraltet ist. Zur Zeit von Jesus war er ein gutes Medium um Moral zu verbreiten.. aber Heute?!?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Immer Defalt-Wert bei Ini.ReadString

  Alt 27. Feb 2010, 21:02
ini := Tinifile.Create('Version.ini'); Und wo in den hunderten Ordner auf deiner Festplatte soll Windows die Ini-Datei finden?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Immer Defalt-Wert bei Ini.ReadString

  Alt 27. Feb 2010, 21:08
Zitat:
Und wo in den hunderten Ordner auf deiner Festplatte soll Windows die Ini-Datei finden?
MSDN-Library durchsuchenGetPrivateProfileString

Zitat:
lpFileName [in]

The name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
Wobei neuere Windowsversionen auch gern mal sowas in die Registry verlegen, anstatt eine Datei anzulegen. (vorallem da man seit Vista normaler Weise im Windowsverzeichnis keine Schreibrechte hat)

Der FileStream nimmt aber ohne Pfadangabe das aktuelle Arbeitsverzeichnis.


Ergo: relative Pfade sind böse.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Mariaki
Mariaki

Registriert seit: 21. Sep 2008
64 Beiträge
 
RAD-Studio 2010 Arc
 
#4

Re: Immer Defalt-Wert bei Ini.ReadString

  Alt 27. Feb 2010, 21:11
Ach wie doof.. ich hab da jetzt 1 Stunde dran gesessen.. ja.. ok.. danke..
nehme aber trotzdem ini.. einfacher als wenn man erst ne *.reg macht die herunterlädt.. dann in die registry lädt und dann den wert aus der registry nimmt..

trotzdem thx@all
Benedikt
Warum merken die ganzen Christen eigentlich nicht, dass Gott veraltet ist. Zur Zeit von Jesus war er ein gutes Medium um Moral zu verbreiten.. aber Heute?!?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Immer Defalt-Wert bei Ini.ReadString

  Alt 27. Feb 2010, 21:24
Zitat von himitsu:
Zitat:
lpFileName [in]

The name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
Das ist mir bekannt. Allerdings ganz böse wird es, wenn man im Windows Ordner keine Schreibrechte hat. Was macht Windows dann? dann kann man sie nämlich wirklich suchen.

@Mariaki: Du sollst nicht die Registry benutzen, sondern einfach nur den absoluten Pfad zu der Ini-Datei angeben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Immer Defalt-Wert bei Ini.ReadString

  Alt 28. Feb 2010, 09:32
Abgesehen davon:
Zitat:
Delphi-Quellcode:
stream := TFileStream.Create('Version.ini', fmcreate);
  ini := Tinifile.Create('Version.ini');
Ich weiß nicht genau, was Windows da intern macht, aber evtl. gibt es die Datei, die TIniFile hier zugewiesen wird, zu diesem Zeitpunkt noch gar nicht. Ich würde die IniFile erst nach dem Download instanzieren, um sicher zu gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Immer Defalt-Wert bei Ini.ReadString

  Alt 28. Feb 2010, 09:41
Zitat von DeddyH:
Abgesehen davon:
Das TIniFile ist 'ne recht doofe Klasse, dieses merkt sich beim .Create nur den Dateinamen und bei jedem einzelnem Lese-/Schreibzugriff wird die Datei geöffner, komplett ausgelesen, der gewünschte Teil rausgeholt oder verändert und bei 'ner Änderung dann wieder komplett gespeicher.

Also in diesem Fall ginge dieses Vorgehn (wenn der Pfad stimmen würde).

Aber bei anderen Klassen, wie z.B. TMemIniFile und eigentlich alle anderen Abkömmlingen davon, würde dein Einwand stimmen.
Und da das Vorgehn von TIniFile recht "unkonservativ" ist, sollte man besser auf dich hören.

> erst Datei erstellen
> alles speichern
> Datei schließen
> und danach dann erst auslesen

PS: Wozu diese Datei eigentlich real ablegen?

ich würde sie in einen String oder Stream runterladen und dann direkt mit TMemIniFile drauf zugreifen, welches auch komplett im RAM damit arbeiten kann.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Immer Defalt-Wert bei Ini.ReadString

  Alt 28. Feb 2010, 09:59
[OT]
Könnt jemand bitte noch der Überschrift ein "u" spendieren?
[/OT]
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz