![]() |
SynEdit Zählproblem
Hallo!
Ich möchte in einem SynEdit die Zeichen zählen. Ich habe diese Funktion geschrieben, aber es werden immer zwei Zeichen mehr als vorhanden gezählt. Woran könnte das liegen??
Delphi-Quellcode:
Danke für jede Hilfe :-D
var s: string;
z: integer; begin s:= synedit1.text; z:= Length(s); ShowMessage('Das aktuelle Dokument hat ' + IntTostr(z) + ' Zeichen'); |
Re: SynEdit Zählproblem
Der Code müsste gehen.
Hast du eventuell beim "manuellen" zählen die Leerzeichen vergessen ? |
Re: SynEdit Zählproblem
Zitat:
mfg gauggi |
Re: SynEdit Zählproblem
Zeig doch mal nen Ausschnitt des Textes den du zählen willst.
Wenn da ein ein Absatz oder so drin ist, dann zählst du #10#13 mit |
Re: SynEdit Zählproblem
Hi,
das Zeichen für eine neue Zeile besteht aus zwei Zeichen: chr(13) und chr(10) (\r\n, #13#10, nenn's wie du wilst). Selbst wenn du nur eine Zeile hast, wird am Ende eine weitere Zeile hinzukommen, die SynEdit afaik immer hinzufügt. Chris |
Re: SynEdit Zählproblem
Zitat:
Wie kann ich es programmieren, dass der Zeilenumbruch nicht gezählt wird. Danke! //edit: Mir ist aufgefallen, dass auch alle Leerzeichen gezählt werden. Wie kann ich das unterbinden. |
Re: SynEdit Zählproblem
Hi,
ich würde einfach ![]() Chris |
Re: SynEdit Zählproblem
Zitat:
Wie kann ich StringReplace verwenden? mfg gauggi |
Re: SynEdit Zählproblem
Zitat:
Chris |
Re: SynEdit Zählproblem
Zitat:
Gruß Hawkeye |
Re: SynEdit Zählproblem
Zitat:
Wie kann ich das mit Ganzzahlarithmetik lösen?? mfg gauggi |
Re: SynEdit Zählproblem
Ok, du kennst die Länge des Textes und die Anzahl der Zeilen. Zudem weißt du, daß für jede Zeile ein Zeilenwechsel (#13#10) mitgezählt wird, der dich aber nicht interessiert. Christopher hat dann noch bemerkt, daß die SynEdit-Komponente möglicherweise einen Zeilenwechsel zusätzlich einfügt.
Daraus sollte sich doch eine einfache Formel ableiten lassen, oder? Gruß Hawkeye |
Re: SynEdit Zählproblem
Wenn man die Gesamtlänge aller Zeilen und Zeichen zählen möchte, braucht man nur das Zeilenumbruchformat kennen. Synedit besitzt momentan 3 Umbruchformate (Windows, Unix, Mac). Mod's von Synedit unterstützen noch weitere Formate.
Diese Funktion wurde für die ANSI-Variante geschrieben:
Delphi-Quellcode:
function GetSpaceLength(const Editor: TSynEdit): Integer;
var i, Lines: Integer; var f: Byte; begin Result := 0; if Editor <> nil then begin Lines := Editor.Lines.Count; if TSynEditStringList(Editor.Lines).FileFormat = sffDos then f := 2 else f := 1; // DOS bricht mit 2 Zeichen um, MAC und UNIX jeweils mit einem Zeichen Result := (Lines * f); // Zeichen für die Zeilenumbrüche errechnen if Lines <> 0 then // bei nur einer Zeile dec(Result, f); 2 bzw. 1 Byte abziehen for i := 0 to Lines -1 do // Alle Zeichen alle Zeilen zählen inc(Result, Length(Editor.Lines[i])); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 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