AGB  ·  Datenschutz  ·  Impressum  







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

TIniFile.ReadString erzeugt Schreibzugriff ?

Ein Thema von hoika · begonnen am 28. Nov 2006 · letzter Beitrag vom 29. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 09:24
Hallo #,

ich dachte immer, dass Windows die Ini-Dateien nur zum Lesen öffnet,
wenn ich nur per ReadString zugreife.
Der Application Verifier meckert aber und sagt, ich will Schreiben.
Der folgende Code wird angemeckert.

Ich weiss, dass Ini-Dateien out sind, aber sie sind so schön einfach
für kleinere lokale Optionen.
Ich will da nicht die Registry bemühen.

Delphi-Quellcode:
      IniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'App.Ini');
      try
        bMultipleInstances:= IniFile.ReadBool('Options', 'bMultipleInstances', False);
      finally
        IniFile.Free;
      end;

Heiko
Heiko
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 09:30
Hallo Heiko,

probiere es mal mit TMemIniFile anstelle von TIniFile.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 10:10
Zitat von hoika:
ich dachte immer, dass Windows die Ini-Dateien nur zum Lesen öffnet,
wenn ich nur per ReadString zugreife.
Der Application Verifier meckert aber und sagt, ich will Schreiben.
Scheinbar öffnet GetPrivateProfileString die Ini Datei doch nicht nur zum Lesen. Ich denke mal an diesen Routinen hat lange keiner mehr gearbeitet seit Win95. (Daher wahrscheinlich auch die Längenbeschränkung bei ReadString)

Zitat von hoika:
Ich will da nicht die Registry bemühen.
Du kannst deinen Code fast vollständig so belassen, wenn du TRegIniFile benutzt. Das ist ein Wrapper für Registry-Zugriffe auf "Ini-Art"
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 10:25
Hallo,

ja, ich weiss, der Punkt ist,
der Nutzer kann dort ein paar Sachen reinschreiben,
die das Startverhalten des Programms beeinflussen.
Aber 1. es soll keiner so ohne weiteres machen können
und 2. wenn doch, soll es einfach festzulegen sein.

TRegIniFile heisst für den Nutzer "regedit fummeln".

Naja, ich werde ihm wohl ein Form dafür spendieren müssen,
obwohl es mir nicht so passt.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 10:35
Zitat von hoika:
Aber 1. es soll keiner so ohne weiteres machen können
und 2. wenn doch, soll es einfach festzulegen sein.
das widerspricht sich. Egal, für diesen Zweck sind XML Dateien auch gut geeignet. Schön strukturiert und von erfahrenen Nutzern können die auch bearbeitet werden, ohne das Gefahr für das System besteht. Und wenn du es richtig anstellst, sind XMLs auch abschreckend genug, damit Laien die Finger davon lassen (was sie erfahrungsgemäß nicht tun)
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 10:41
Hi,
ich glaube es gibt zig andere Ini-Komponenten, davon auch ein zwei recht bekannte, die eben die VCL Version ersetzen können. Da sind dann sämtliche Beschränkungen in der Größe bereits entfernt (insbesonder die 64K Grenze, soweit die in der VCL auch existiert). Einfach mal suchen, könnte sowas wie TBigIni oder so gewesen sein.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 11:22
Hallo,

diese ini ist der Rest von altem Code.
Ich muss das eh umstellen.
Ich bin nur darüber gestolpert beim Test des Application Verifiers.

Zu XML, das löst das Problem nicht.
Ich habe die Ini ja im Programme-Verzeichnis
Und dort erlaubt der UAC von Vista keinen Schreibzugriff.

Korrektur, der Admin darf ja,
also würde das das Problem doch lösen,
wenn die XML-Kompponente wirklich nur lesend zugreift.

Aprpos:
Welche Komponente nimmt man ???
Ich kenne bisher nur die von MS direkt.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 11:29
Zitat von hoika:
Welche Komponente nimmt man ???
Ich kenne bisher nur die von MS direkt.
TXMLDocument
Dort kannst du als Vendor auch einen anderen als MSXML angeben. z.B OpenXML (das ist native Object Pascal)
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#9

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 11:35
Was spricht dagegen, die Ini-Datei an einen Ort mit Schreibrechten zu verlegen? Jeder User hat dafür ja sein eigenes Verzeichnis, leg dort einfach ein Verzeichnis mit Deinem Programmnamen an und speicher die Ini-Datei dort drin ab. Wir stellen hier auch gerade diverse Projekte dahingehend um...
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: TIniFile.ReadString erzeugt Schreibzugriff ?

  Alt 28. Nov 2006, 22:35
Zitat von hoika:
Welche Komponente nimmt man ???
Für solche INI Sachen gedacht und genutzt: XMLLib

Öffnet erst zum Schreiben, wenn geschrieben werden soll...
  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 08:08 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