Einzelnen Beitrag anzeigen

SneakyBagels
(Gast)

n/a Beiträge
 
#15

AW: Datei mit Steuerzeichen in StringList laden?

  Alt 4. Jul 2017, 10:24
Wahrscheinlich wäre es sinnvoller zu fragen, was Sneaky eigentlich genau erreichen möchte?
Zitat:
Ziel ist es: ich möchte einen SubString in der Datei finden und dafür keine extra 3rd Party Unit verwenden.


Es hat nun funktioniert.

Delphi-Quellcode:
var
 aFile, sSubStr: String;
 AnsiStr: AnsiString;
 ByteArray: TArray<Byte>;
begin
 sSubStr := 'DasHierMussGefundenWerden';

 aFile := 'C:\Users\<name>\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations\27932e73jddafda77b.customDestinations-ms';

 ByteArray := TFile.ReadAllBytes(aFile);
 try
  if Length(ByteArray) > 0 then
   begin
    SetString(AnsiStr, PAnsiChar(@ByteArray[0]), Length(ByteArray));

    if Pos(sSubStr, AnsiUpperCase(AnsiStr)) - 1 > 0 then
     // tue etwas, wenn sSubStr in aFile gefunden wurde
   end;
 finally
  SetLength(ByteArray, 0);
 end;
Eins möchte ich betonen: Herr Jaenikes Units ist wirklich super!
Aber da ich aktuell mein Projekt aufräume und ich versuche einen gewissen Standard einzuhalten, versuche ich Units, die ich nur ein-, höchstens zwei- oder dreimal verwende durch andere Möglichkeiten zu ersetzen.

Beispiel. Was vorher so aussah...
Delphi-Quellcode:
var
 sCurrLine, sRes: string;
 FileReaderEx: TFastFileReader;
begin
 sRes := '';

 if FileExists(aFile) then
  begin
   FileReaderEx := TFastFileReader.Create(aFile);

   try
    while FileReaderEx.Position < FileReaderEx.Size do
     begin
      FileReaderEx.ReadLn(sCurrLine);

      sRes := sRes + sLineBreak + sCurrLine;
     end;
   finally
    FileReaderEx.Free;
   end;
  end;

 {$WARNINGS OFF}
 Result := Trim(UTF8toString(sRes));
 {$WARNINGS ON}
end;
Sieht nun so aus
Delphi-Quellcode:
begin
 if FileExists(aFile) then
  Result := TFile.ReadAllText(aFile, TEncoding.UTF8);

 Result := Trim(Result);
end;

Geändert von SneakyBagels ( 4. Jul 2017 um 10:45 Uhr)
  Mit Zitat antworten Zitat