AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi IniFile ReadBinaryStream bekomme ich nicht in Gange
Thema durchsuchen
Ansicht
Themen-Optionen

IniFile ReadBinaryStream bekomme ich nicht in Gange

Ein Thema von KodeZwerg · begonnen am 1. Nov 2018 · letzter Beitrag vom 2. Nov 2018
 
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#6

AW: IniFile ReadBinaryStream bekomme ich nicht in Gange

  Alt 1. Nov 2018, 13:22
Trotzdem hätte ich das so gemacht (wie p80286 schon sagte):
Delphi-Quellcode:
function ReadIniStream( const Filename, Section, Ident: String; const IniStream: TStream; const FolderOverride: String = '' ): Boolean;
var
  FIniFile: TIniFile;
  FName: String;
  FMemStream: TMemoryStream;
begin
  Result:=False;
  if IniStream<>nil then
  begin
    FMemStream := TMemoryStream.Create();
    try
      FName := GetIniFilename( Filename, FolderOverride );
      if not SysUtils.FileExists( FName ) then
        Exit;
      FIniFile := TIniFile.Create( FName );
      FIniFile.ReadBinaryStream( Section, Ident, FMemStream );
      FMemStream.Position := 0;
      IniStream.Position := 0;
      IniStream.CopyFrom(FMemStream, SizeOf(FMemStream));
      Result:=True;
    finally
      FMemStream.Free;
      IniStream.Position := 0;
    end;
  end;
end;
Zumindest ungefähr so (hab ich nicht in Delphi getestet).

Der Grund ist folgender:
Zum einen vertrete ich die Einstellung: Wer etwas erzeugt, der gibt's auch frei.
Zum anderen wird zwar in deiner jetzigen Version der Rssultstream auf jeden Fall erzeugt, aber sollte in beim Lesen aus der Ini was schief gehen, gibt sie trotzdem irgendwas zurück. Die aufrufende Methode erfährt davon nichts, und muss dann mit den fehlerhaften Daten weiterarbeiten.

Mit o.g. Lösung hätte man schon mal die Info, ob das Lesen des Streams fehlerfrei war. Nun muss man zwar in der aufrufenden Methode den Stream erzeugen (wieder eine Zeile mehr), aber damit erhöht sich m.M.n. die Übersichtlichkeit an der Stelle, wo ich den Stream dann auch wieder freigeben muss.

Ist aber nur meine Meinung
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
 


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 06: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-2025 by Thomas Breitkreuz