Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringende wieder hinzufügen (https://www.delphipraxis.net/118897-stringende-wieder-hinzufuegen.html)

TheMiller 17. Aug 2008 16:00

Re: Stringende wieder hinzufügen
 
Ups.... durch TStringList - das könnte natürlich einiges Erklären...

Apollonius 17. Aug 2008 16:01

Re: Stringende wieder hinzufügen
 
Wenn du einen TFileStream verwendest, sollte es funktionieren.

TheMiller 17. Aug 2008 16:12

Re: Stringende wieder hinzufügen
 
Ich habe einen MemoryStream verwendet und dann aus Platte geschrieben... Doch so ganz entfert er die "&%"-Zeichen nicht. Hier mal die Originaldatei und die Datei aus dem Stream:

Code:
ÿØÿà JFIF  H H ÿá‚Exif II*    
     †       ”              š       ¢   (       1    ª   2    Æ          i‡    Ü   T
Code:
ÿØÿà %JFI &%  %  %H&%&%ÿá  Exi &  I *&% &  &  % &  %   %†& &     %& &  ”   %&%       %&% &  &  &% &  &  %&% %   &  %&% %   &  ( %   &  & %&%1&%&%&% %ª&%& &%2 & &%& &%  %&%&%&%&%&%&%&%&%&%i‡ %&%&%&%Ü&%&%&%
Hm... hilft das weiter? Sieht seltsam aus...

Apollonius 17. Aug 2008 16:14

Re: Stringende wieder hinzufügen
 
Ich hatte im Else-Zweig eine Zeile vergessen.

grenzgaenger 17. Aug 2008 16:19

Re: Stringende wieder hinzufügen
 
probier das mal:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}

uses
  SysUtils;

function Replace(const aStr: string;
                 const aSearchStr: string;
                 const aReplaceChar: char): string;
var
 l,x: integer;    
 c: PChar;          
begin
 setlength(result, length(aStr));
 c := @aStr[1];
 x := 0;
 for l := 1 to length(aStr) do
 begin
  inc(x);
  if pos(aSearchStr, c) = 1 then
  begin
   result[x] := aReplaceChar;
   inc(c, length(aSearchStr));
  end
  else
  begin
   result[x] := c^;
   inc(c);
  end;
 end;
 setlength(result, x);
end;
 
begin
 writeln(Replace('a&%68&%a4', '&%', #0));
 readln;
end.
in der performance kann man da sicher noch was machen... sollte aber funzzen...

ansonsten, denk an omata das ganze, kann nicht bei einem binärformat vernünftig funktionieren...

hierzu müsstest du schon beim lesen, z.b. in hexcode umwandeln, in hexcode editieren und beim speichern den hex wieder in die binärdarstellung bringen...

aber das wirst schon selbst noch merken ... :drunken:

Christian Seehase 17. Aug 2008 22:43

Re: Stringende wieder hinzufügen
 
Moin DJ-SPM,

warum nimmst Du nicht einfach StringReplace? :gruebel:

Delphi-Quellcode:
sErgebnisMitBinaerenNullen := StringReplace(Memo1.Text,'DeineErsatzzeichen',#00,[rfReplaceAll,rfIgnoreCase]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr.
Seite 2 von 2     12   

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