Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Pressemitteilungs-Tool
20. Mär 2013, 00:54
Wenn Delphi-Code gepostet wird, wäre es schön, wenn der in Delphi-Tags gesetzt wird, dann bekommt man auch kein Augenkrebs
so schreiben
Code:
[DELPHI]
procedure foo;
begin
// ein Kommentar
end;
[/DELPHI]
und so aussehen
Delphi-Quellcode:
procedure foo;
begin
// ein Kommentar
end;
Um einen String zuverlässig in eine Zeile zu schreiben, sollte man spezielle Zeichen, wie die Zeilenumbrüche, einfach escapen
Delphi-Quellcode:
uses
SysUtils;
const
C_ESCAPE_CHAR = '\';
C_SUBST_CHARS : array[0..7] of char = ( #0, #7, #8, #9, #10, #11, #12, #13 );
C_ESCAPE_CHARS : array[0..7] of char = ( '0', 'a', 'b', 't', 'n', 'v', 'f', 'r' );
function EscapeStr( const AStr : string ) : string;
var
LIdx : Integer;
begin
Result := AStr;
Result := StringReplace( Result, C_ESCAPE_CHAR, C_ESCAPE_CHAR + C_ESCAPE_CHAR, [rfReplaceAll] );
for LIdx := 0 to 7 do
Result := StringReplace( Result, C_SUBST_CHARS[LIdx], C_ESCAPE_CHAR + C_ESCAPE_CHARS[LIdx], [rfReplaceAll] );
end;
function UnescapeStr( const AStr : string ) : string;
var
LIdx : Integer;
begin
Result := AStr;
for LIdx := 0 to 7 do
Result := StringReplace( Result, C_ESCAPE_CHAR + C_ESCAPE_CHARS[LIdx], C_SUBST_CHARS[LIdx], [rfReplaceAll] );
Result := StringReplace( Result, C_ESCAPE_CHAR + C_ESCAPE_CHAR, C_ESCAPE_CHAR, [rfReplaceAll] );
end;
Jeden String, den du in die Datei schreibst schickst du jetzt einmal durch den Escaper
Delphi-Quellcode:
procedure TForm1.Speichern1Click( Sender: TObject );
var
Datei: TextFile;
begin
if SaveDialog1.Execute
then
begin
AssignFile( Datei, SaveDialog1.FileName );
Rewrite( Datei );
WriteLn( Datei, EscapeStr( EditName.Text ) );
WriteLn( Datei, EscapeStr( EditEmail.Text ) );
WriteLn( Datei, EscapeStr( EditPassword.Text ) );
WriteLn( Datei, EscapeStr( EditTelefon.Text ) );
WriteLn( Datei, EscapeStr( EditUeberschrift.Text ) );
WriteLn( Datei, EscapeStr( EditBeschreibung.Text ) );
WriteLn( Datei, EscapeStr( EditAnmerkungen.Text ) );
WriteLn( Datei, EscapeStr( MemoAdresse.Text ) );
CloseFile( Datei );
end;
end;
Beim Zurücklesen natürlich einmal wieder durch den Unescaper
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
Geändert von Sir Rufo (20. Mär 2013 um 01:11 Uhr)
|