Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi #13#10 funzt in synedit nicht! (https://www.delphipraxis.net/44099-13-10-funzt-synedit-nicht.html)

nitroex 13. Apr 2005 15:58


#13#10 funzt in synedit nicht!
 
Hi @all

Ich habe ein Problem: in Synedit (diese Highlight-Komponente; Edit UND Memo) kann man einen Zeilenumbruch NICHT mit #13#10 einfügen, muss ich aber, da ich ein Template auslese und alle '|' mit einem Zeilenumbruch mithilfe von Stringreplace (a := stringreplace(a,'|', #13#10,[rfReplaceAll, rfIgnoreCase]);) ersetzen will. da kommt dann nur soetwas raus: blablablablabla

WIE geht das?

mfg :: ich

toms 13. Apr 2005 16:00

Re: #13#10 funzt in synedit nicht!
 
Hallo!

Sollte so funktionieren:

Delphi-Quellcode:
a := stringreplace(a,'|', #$D#$A ,[rfReplaceAll, rfIgnoreCase])

malo 13. Apr 2005 16:01

Re: #13#10 funzt in synedit nicht!
 
Versuch mal "#13#10" durch "#13+#10" zu ersetzen. Also so:

Delphi-Quellcode:
a := stringreplace(a,'|', #13 + #10,[rfReplaceAll, rfIgnoreCase]);
Ungetestet ;)

//edit: @Toms: So, wie ich das sehe, ist das doch nur die hexadezimale Schreibweise, ansonsten gibt es jedoch keine Unterschiede. "#13#10" ist imho 100% gleichbedeutend mit "#$D#$A" ;)

bigg 13. Apr 2005 16:02

Re: #13#10 funzt in synedit nicht!
 
Nein das geht so nicht.
SynEdit unterstützt mehrere Zeilenumbruchformate: Windows, UNIX und MAC.

Machs doch wie folgt:
Such dir mit Hilfe von Pos() dein Zeichen aus dem Template und dann fügst du mit
SynEdit.Lines.Add() eine neue Zeile hinzu.

Dann suchst du den nächsten "Umbruch" aus deinem Template
und immer so weiter.

Dax 13. Apr 2005 16:04

Re: #13#10 funzt in synedit nicht!
 
@toms: #$D#$A ist #13#10 in Hex.. also nichts anderes
@malo: Chars mit angegebenem Code werden automatisch zu Strings zusammengefügt

Versuchs mal mit entweder nur #10 oder #13. Sollte eigentlich klappen.
PS: #13#10 geht bei mir als EOL-Identifier.. :gruebel:

jim_raynor 13. Apr 2005 16:06

Re: #13#10 funzt in synedit nicht!
 
So wie bigg schreibt. Add fügt wirklich eine neue Zeile hinzu und schert sich nicht um Zeilenumbrüche. Am einfachsten, dafür am langsamsten ist, wenn du SynEdit.Lines.Text := SynEdit.Lines.Text + NeuerText machst.
Ansonsten. Auch #13 + #10 ist das gleiche wie #13#10 ;)

toms 13. Apr 2005 16:07

Re: #13#10 funzt in synedit nicht!
 
Zitat:

Zitat von Dax
@toms: #$D#$A ist #13#10 in Hex.. also nichts anderes

Hab's mal mit #13#10 probiert. geht nicht.
Hab's mal mit #$D#$A probiert. geht.

bigg 13. Apr 2005 16:11

Re: #13#10 funzt in synedit nicht!
 
Zitat:

Zitat von toms
Zitat:

Zitat von Dax
@toms: #$D#$A ist #13#10 in Hex.. also nichts anderes

Hab's mal mit #13#10 probiert. geht nicht.
Hab's mal mit #$D#$A probiert. geht.

Geht es auch, wenn du das UNIX-Format verwendest?

nitroex 13. Apr 2005 16:12

Re: #13#10 funzt in synedit nicht!
 
erstmal danke an alle, ging ja schnell!

#$D#$A ist #13#10 und auch #13#10 funzen nicht, immer wieder die lustigen rechtecke ...

mit synedit.lines.add('') könnte ich es zwar machen, iss aber ein bisschen aufwendig ... :roll:

'SynEdit.Lines.Text := SynEdit.Lines.Text + NeuerText' iss nicht so gut, da ich auch mittendrin etwas ersetzen will/muss ...

sonst noch einfachere vorschläge?

Speedmaster 13. Apr 2005 16:12

Re: #13#10 funzt in synedit nicht!
 
Wie isn das eigentlich zum Thema Syn-Edit, woher bekomme ich so einen Syntaxhighlighter mit Codefolding??

nitroex 13. Apr 2005 16:13

Re: #13#10 funzt in synedit nicht!
 
@toms: #$D#$A funzt bei mir nicht

jim_raynor 13. Apr 2005 16:16

Re: #13#10 funzt in synedit nicht!
 
Wie fügst denn überhaupt den Text in das Synedit ein? Denn genau dort liegt das Problem. Du kannst nicht ohne weiteres Add / Insert /oder ähnliches verwenden, da diese nur eine Zeile hinzufügen und sich einen Dreck um Zeilenumbrüche kümmern. Du könntest nur alles in einer Temporären StringList machen und anschließend den Text zuweisen.

Delphi-Quellcode:
var
  sl: TStringList;
begin
  sl:=TStringList.Create;
  sl.AddStrings(Synedit.Lines);
  // Mache was mit sl
 
  Synedit.Lines.Text:=sl.Text;
end;
Nur bei einer Zuweisung von Text werden die Zeilenumbrüche aufgelöst. Ist genau das selbe Problem wie bei Listboxen und anderen Komponenten die die Stringlist nutzen.

jim_raynor 13. Apr 2005 16:16

Re: #13#10 funzt in synedit nicht!
 
Zitat:

Zitat von Speedmaster
Wie isn das eigentlich zum Thema Syn-Edit, woher bekomme ich so einen Syntaxhighlighter mit Codefolding??

Codefolding gibt es bei Synedit nicht. Dazu gibts hier aber schon andere Themen.

nitroex 13. Apr 2005 16:54

Re: #13#10 funzt in synedit nicht!
 
@jim_raynor: danke, so kann ich es machen

hincapie 14. Apr 2005 06:20

Re: #13#10 funzt in synedit nicht!
 
Also ich mache das folgendermaßen:
einmal eine Konstante definieren:
Delphi-Quellcode:
const
  endl =#13+#10;
Dann füge ich den Text ein:
Delphi-Quellcode:
  SynEdit1.SelText := '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' + endl + 'weiterer Text...';
Das klappt bisher immer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz