Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ini-File aus dem Speicherlesen (https://www.delphipraxis.net/155419-ini-file-aus-dem-speicherlesen.html)

Highttower 22. Okt 2010 10:11

Delphi-Version: 5

Ini-File aus dem Speicherlesen
 
Hallo zusammen,

ich wollte fragen ob es möglich ist ein Ini-File dirket aus dem Speicher zu lesen? Oder ob ich zwangsweise über die Platte gehen muss? Kann ich vllt irgendwie eine Speicheradresse als Filename angeben?
Ich hab leider den Eindruck das es schneller geht eine Ini-Memomry-Klasse neu aufzubauen.

Vielen Dank,

Tobi

@EDIT:
Kann ich die Klasse TMemIniFile nutzen?

[OT:] Wie bekomme ich das "Delphi Version 5" weg? -> Meine Delphi Version RAD 2010.

DeddyH 22. Okt 2010 10:16

AW: Ini-File aus dem Speicherlesen
 
Mit TMemIniFile bist Du auf der richtigen Spur, sofern ich Dich richtig verstanden habe.

Highttower 22. Okt 2010 10:20

AW: Ini-File aus dem Speicherlesen
 
Das Problem was ich mit der TMemIniFile habe ist:

Zitat:

Zitat von Delphi Hilfe
...
Die INI-Datei wird einmal bei der Erzeugung des Objekts gelesen. Die Daten der INI-Datei werden in hierarchischen String-Listen gespeichert.
...

Die TMemIniFile-Klasse sieht aber so aus: Wo sind da die hierarchischen String-Listen???
Delphi-Quellcode:
TMemIniFile = class(TCustomIniFile)
  private
    FSections: TStringList;
    FEncoding: TEncoding;
    function AddSection(const Section: string): TStrings;
    function GetCaseSensitive: Boolean;
    procedure LoadValues;
    procedure SetCaseSensitive(Value: Boolean);
  public
    constructor Create(const FileName: string); overload;
    constructor Create(const FileName: string; Encoding: TEncoding); overload;
    destructor Destroy; override;
    procedure Clear;
    procedure DeleteKey(const Section, Ident: String); override;
    procedure EraseSection(const Section: string); override;
    procedure GetStrings(List: TStrings);
    procedure ReadSection(const Section: string; Strings: TStrings); override;
    procedure ReadSections(Strings: TStrings); override;
    procedure ReadSectionValues(const Section: string; Strings: TStrings); override;
    function ReadString(const Section, Ident, Default: string): string; override;
    procedure Rename(const FileName: string; Reload: Boolean);
    procedure SetStrings(List: TStrings);
    procedure UpdateFile; override;
    procedure WriteString(const Section, Ident, Value: String); override;
    property CaseSensitive: Boolean read GetCaseSensitive write SetCaseSensitive;
    property Encoding: TEncoding read FEncoding write FEncoding;
  end;

stahli 22. Okt 2010 10:27

AW: Ini-File aus dem Speicherlesen
 
Wenn Du hierarchische Strukturen brauchst, dann Schau Dir mal XML an.

TMemIniFile entspricht TIniFile, nur dass die Sektionen im Hauptspeicher zwischengespeichert werden.

Highttower 22. Okt 2010 10:35

AW: Ini-File aus dem Speicherlesen
 
Zitat:

Zitat von stahli (Beitrag 1057117)
Wenn Du hierarchische Strukturen brauchst, dann Schau Dir mal XML an.

Genau das verwirrt mich ja, aber wenn das nur in der Hilfe steht und eigendlich nicht da ist dann, ist ja alles gut.

Zitat:

Zitat von stahli (Beitrag 1057117)
TMemIniFile entspricht TIniFile, nur dass die Sektionen im Hauptspeicher zwischengespeichert werden.

D.h. ich brauche doch eine Datei? Oder kann ich eine leere Dummydatei "einlesen", und die Werte danach noch manipulieren?

Luckie 22. Okt 2010 10:40

AW: Ini-File aus dem Speicherlesen
 
Was hat du eigentlich vor?

Highttower 22. Okt 2010 10:50

AW: Ini-File aus dem Speicherlesen
 
Szenario:

Ich bekomme eine Email, diese hole ich mir via Indy ab, in dieser Mail stehen Einstellungen diese. Einstellungen habe ich im Projektantrag (es ist ein Abschlussprojekt bei der IHK), als Value-Pairs deklariert weil ich dachte, hey da nimmst du einfach nen Ini-File und wola alles ist gut. -> Pustekuchen :(

Diese Email stellt das Programm ein, ich verarbeite die angehängten Daten und schreibe eine Mail zurück.

Jetzt stehe ich vor dem Problem, ich habe die Mail im Speicher. Der Sender ist Authenfiziert, und ich will nicht extra über das FileSystem auf die im Speicher liegende "Ini-Datei" zugreifen, es ginge sieht aber blöd aus und braucht lang :(.

Viele Grüße,

Tobi

DeddyH 22. Okt 2010 10:52

AW: Ini-File aus dem Speicherlesen
 
Du brauchst keine Datei (es sei denn, Du willst die gesetzten Werte auch dauerhaft ablegen). In jeder Read-Methode gibt es als letzten Parameter einen Defaultwert, welcher genommen wird, wenn entweder die Section oder der Ident nicht gefunden wird. Und setzt Du einen Wert mittels einer Write-Methode, dann geschieht dies auch nur im Speicher.
BTW: Mit der Hierarchie ist vermutlich gemeint, dass die Sections eine Liste bilden, in der jede Section wiederum eine Liste der Ident-Wertepaare enthält.

himitsu 22. Okt 2010 10:53

AW: Ini-File aus dem Speicherlesen
 
Man kann über .SetStrings eine Datei z.B. über eine TStringList direkt in TMemIniFile reinladen.
Beim Erstellen der TMemIniFile einfach keinen Dateinamen
Delphi-Quellcode:
.Create('');
angeben und danach dann
Delphi-Quellcode:
.SetStrings
.

Highttower 22. Okt 2010 10:58

AW: Ini-File aus dem Speicherlesen
 
Ah :), mal wieder zu kompliziert gedacht.

Dank himitsu, es geht :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 Uhr.
Seite 1 von 2  1 2      

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