Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#10

AW: Steuerzeichen-String umwandeln in "echtes" Steuerzeichen

  Alt 29. Jun 2017, 14:36
Oder meinst du dass du, aus welchen Gründen auch immer, Strings (z.B. '#1234') schon vorliegen hast und diese nun zu Chars (z.B. #1234) machen möchtest?
Genau da dürfte das Problem liegen:

Im Array steht '#1234', ersetzt werden soll aber #1234. Gesucht wird eine Methode, um aus '#1234' #1234 zu machen.

Einfacher wäre es, direkt ein Array mit Steuerzeichen zu machen, statt eine Array mit Zeichenfolgen, die so aussehen, wie Steuerzeichen im Delphiquelltext, wenn man deren mit # beginnenden Pedant nutzt.

Statt #1234 müsste doch auch Chr(1234) gehen, oder irre ich mich da?

In dem Fall könnte auch ein Array of Word (oder sowas) gehen und in der Ersätzroutine könnte es dann so aussehen:
Delphi-Quellcode:
const
  sZeichen : Array [1..3] of Word = (128064, 128125, 128148);

sText := StringReplace(sText, Chr(128064), '', [rfReplaceAll, rfIgnoreCase]);
(Bitte nicht hauen, wenn ich mich da jetzt irre )

Ok, wenn das Ganze nun nicht im Quelltext sein soll, dann hilft das Array so ja auch nicht.
Also z. B. eine Datei, die in jeder Zeile eine "Zahl" enthält, also
Code:
128064
128125
128148
Die Datei einlesen und dann zeilenweise abarbeiten.

Sinngemäß ungefähr sowas?
Delphi-Quellcode:
var
  sl : TStringList;
  i : Integer;
  ch : WideChar;
begin
  sl := TStringList.Create;
  sl.LoadFromFile('Steuerzeichen.cfg');
  for i := 0 to sl.Count - 1 do begin
    ch := WideChar(StrToInt(sl[i]));
    sText := StringReplace(sText, ch, '', [rfReplaceAll, rfIgnoreCase]);
  end;
  sl.Free;
end;
Edit: Geht das bei aktuellen Delphis mit WideChar?
Laut Delphi-7-Hilfe handelt es sich um: "WideChar-Werte stellen Zeichen mit einer Länge von mehr als einem Byte dar."

Geändert von nahpets (29. Jun 2017 um 15:01 Uhr) Grund: Nach der 95. Änderung hoffentlich nicht mehr nur noch Müll, wie am Anfang. Sollte halt erst denken dann schreiben :-(
  Mit Zitat antworten Zitat