AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Datei komplett in einen String lesen

Ein Thema von idefix2 · begonnen am 14. Mär 2012 · letzter Beitrag vom 14. Mär 2012
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Datei komplett in einen String lesen

  Alt 14. Mär 2012, 20:44
Hallo,

ich suche eine Funktion, mit der ich ein komplettes File in einen String laden kann? Ich habe in der Hilfe etwas herumgesucht und nur die Windows readfile Funktion gefunden. Gibt es da etwas weniger "systemnahes" oder muss ich mir das selbst basteln?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 20:46
Moin,

schau Dir doch mal TFileStream an.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

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

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 20:53
Wie wäre es mit einer StringListe?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
642 Beiträge
 
#4

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 20:54
Geht das vielleicht mit der StringList. Irgendwo kann man die ganze Liste zu einem string machen. .. glaub ich
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 20:59
Delphi-Quellcode:
function FileLoad(const Filename: String; const Encoding: TEncoding = nil): String;
var
  Strings: TStrings;
begin
  Strings := TStringList.Create;
  try
    Strings.LoadFromFile(Filename, Encoding);
    Result := Strings.Text;
  finally
    Strings.Free;
  end;
end;
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 21:21
Suchst du sowas? Ist aus einem alten Projekt, keine Ahnung ob es noch funktioniert. Ich habe auch noch die Save Funktion dazu gepackt, für den Fall, dass du den String auch wieder speichern willst.

Delphi-Quellcode:
function LoadStringFromFile(sInFile: String; var sFileString: String): Boolean;
var
  FileStream: TFileStream;
begin
  Result := False;
  if not FileExists(sInFile) then Exit;
  FileStream := TFileStream.Create(sInFile, fmOpenRead);
  try
    if FileStream.Size <> 0 then begin
      SetLength(sFileString, FileStream.Size);
      FileStream.Read(sFileString[1], FileStream.Size);
      Result := True;
    end;
  finally FileStream.Free end;
end;

function SaveStringToFile(sOutFile: String; sFileString: String): Boolean;
var
  FileStream: TFileStream;
begin
  Result := False;
  FileStream := TFileStream.Create(sOutFile, fmCreate);
  try
    if Length(sFileString) <> 0 then begin
      FileStream.Write(sFileString[1], Length(sFileString));
      Result := True;
    end;
  finally FileStream.Free end;
end;
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 21:48
danke, ich werde die beiden Varianten probieren. LoadStringFromFile könnte ja um einiges schneller sein, falls es noch funktioniert - ich fürchte allerdings, dass die Routine so mit den aktuellen 16-Bit-Characters nicht mehr funktionieren wird, wenn das File mit einem 8-Bit Zeichensatz geschrieben wurde.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.424 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 21:57
Nicht nur das.

LoadStringFromFile ließt natürlich nur als Unicode ein, aber es wird nur der halbe String behandelt, weil die Bytegröße nicht angepaßt wird.
Spätestens ab Delphi 2009 muß also entweder die Datengröße an die des Chars an gepaßt werden,
oder man sellt alles auf AnsiString um.

Mit einem StringStream oder einer StringList hat man den Vorteil (ab D2009) auch verschiedene Textcodierungen einzulesen, da dort intern eine Konvertierung eingebaut wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Datei komplett in einen String lesen

  Alt 14. Mär 2012, 22:06
Da frage ich mich doch wofür das gut sein soll. Natürlich kann man eine Datei, bzw. ihren Inhalt in einen String packen, aber wofür soll das gut sein?
Wie wäre es denn stattdessen ein Array of Byte (Array of AnsiChar) zu nutzen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf