AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Pressemitteilungs-Tool

Ein Thema von Erutan · begonnen am 16. Mär 2013 · letzter Beitrag vom 20. Mär 2013
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Pressemitteilungs-Tool

  Alt 19. Mär 2013, 23: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 00:11 Uhr)
  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 00:29 Uhr.
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