Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SynEdit Zählproblem (https://www.delphipraxis.net/70237-synedit-zaehlproblem.html)

gauggi 27. Mai 2006 14:00

Re: SynEdit Zählproblem
 
Zitat:

Zitat von Hawkeye219
Zitat:

Zitat von Chakotay1308
ich würde einfach Delphi-Referenz durchsuchenStringReplace verwenden, um in einem temporären String die Zeilenumbrüche zu löschen.

Warum? Wenn Length(Edit.Text) die Länge des Textes liefert und Edit.Lines.Count die Anzahl der Textzeilen, dann sollte das ganze doch mit Hilfe einfacher Ganzzahlarithmetik zu lösen sein.

Gruß Hawkeye

Hallo!

Wie kann ich das mit Ganzzahlarithmetik lösen??

mfg gauggi

Hawkeye219 27. Mai 2006 14:13

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

bigg 27. Mai 2006 15:31

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 23:16 Uhr.
Seite 2 von 2     12   

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