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 Suche TMemo-Komponente mit Zeilenlänge > 1024 (https://www.delphipraxis.net/207232-suche-tmemo-komponente-mit-zeilenlaenge-1024-a.html)

bernau 5. Mär 2021 11:42

Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Tach zusammen,


ich habe eine CSV-Datei, bei der die Länge einer Zeile bis zu 6000 Zeichen sein kann.

Die Original TMemo bricht den Text nach 1024 Zeichen automatisch um.

Bei TRichEdit sind es immerhin (ca.) 3500 Zeichen, die in einer Zeile angezeigt werden. Das reicht mir aber nicht.

Gibt es eine Memo-Komponente, die so einen langen Text nicht umbricht?

TiGü 5. Mär 2021 12:06

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Wäre da eine Virtual TreeView nicht besser?

KodeZwerg 5. Mär 2021 12:08

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
TMemo 1024, TRichEdit 4096, TStringList unlimited (?)

Aber zur Darstellung weiß ich leider auch keinen Rat.

bernau 5. Mär 2021 12:11

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Zitat:

Zitat von TiGü (Beitrag 1484484)
Wäre da eine Virtual TreeView nicht besser?

Ich muss ggf. den Text bearbeiten können.

haentschman 5. Mär 2021 12:20

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Liste der Anhänge anzeigen (Anzahl: 1)
Imho besteht das Notepad++ auch aus einem SynEdit...oder? ...Allerdings die C++ Version. :zwinker:

TiGü 5. Mär 2021 12:23

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Zitat:

Zitat von bernau (Beitrag 1484487)
Zitat:

Zitat von TiGü (Beitrag 1484484)
Wäre da eine Virtual TreeView nicht besser?

Ich muss ggf. den Text bearbeiten können.

Wenn es eh eine CSV-Datei ist, dann kannst du doch Spalten je Trenner machen?!
Dort dann regulär per Standardeditor bearbeiten oder eigenes Edit-Control einfügen.

Oder ist wirkliche eine "Spalte" 6000 Zeichen lang?
Wenn ja, wie soll man da sinnvoll als Mensch etwas bearbeiten?

KodeZwerg 5. Mär 2021 12:26

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Hab was bei Torry gefunden aber nicht getested.
Bei Torry nach TGSMemo & TGSMemoHTMLCode v.1.0 suchen.

bernau 5. Mär 2021 12:51

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Zitat:

Zitat von TiGü (Beitrag 1484489)
Zitat:

Zitat von bernau (Beitrag 1484487)
Zitat:

Zitat von TiGü (Beitrag 1484484)
Wäre da eine Virtual TreeView nicht besser?

Ich muss ggf. den Text bearbeiten können.

Wenn es eh eine CSV-Datei ist, dann kannst du doch Spalten je Trenner machen?!
Dort dann regulär per Standardeditor bearbeiten oder eigenes Edit-Control einfügen.

Oder ist wirkliche eine "Spalte" 6000 Zeichen lang?
Wenn ja, wie soll man da sinnvoll als Mensch etwas bearbeiten?

Die CSV-Dateien sind nicht immer CSV-Konform. Deshalb muss ich die CSV-Daten im Memo bearbeiten können, damit diese dann korrekt im zweiten Step in einem Grid (oder Tree-View, oder wo auch immer) angezeigt werden.

bernau 5. Mär 2021 12:52

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Zitat:

Zitat von KodeZwerg (Beitrag 1484490)
Hab was bei Torry gefunden aber nicht getested.
Bei Torry nach TGSMemo & TGSMemoHTMLCode v.1.0 suchen.

Danke. Schaue ich mir mal an.

bernau 5. Mär 2021 12:57

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Zitat:

Zitat von haentschman (Beitrag 1484488)
Imho besteht das Notepad++ auch aus einem SynEdit...oder? ...Allerdings die C++ Version. :zwinker:

Stimmt. An SynEdit habe ich gar nicht mehr gedacht. Ich werde es mal testen.

Harry Stahl 5. Mär 2021 15:27

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Zitat:

Zitat von bernau (Beitrag 1484496)
Zitat:

Zitat von haentschman (Beitrag 1484488)
Imho besteht das Notepad++ auch aus einem SynEdit...oder? ...Allerdings die C++ Version. :zwinker:

Stimmt. An SynEdit habe ich gar nicht mehr gedacht. Ich werde es mal testen.

Hallo Gerd, SynEdit geht definitiv, ich habe die Komponente auch in meinem Pascal-Editor drin.

bernau 5. Mär 2021 16:28

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Hi Harry,

hab's grade eingebunden. Funktioniert wunderbar.

mschaefer 5. Mär 2021 16:44

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Man könnte es auch in eine TListView einlesen

Delphi-Quellcode:

uses
  ComCtrls, Types, StrUtils;

procedure ListViewSaveToFile(ListView: TListView; const FileName: string);

  procedure AddTextToLine(var Line: string; const Text: string);
  begin
    Line := Line + Text + #9;
  end;

  procedure MoveCompletedLineToList(const Strings: TStringList; var Line: string);
  begin
    Strings.Add(System.Copy(Line, 1, Length(Line)-1));//remove trailing tab
    Line := '';
  end;

var
  Strings: TStringList;
  LatestLine: string;
  i, j: Integer;

begin
  LatestLine := '';

  Strings := TStringList.Create;
  try
    for i := 0 to ListView.Items.Count-1 do begin
      AddTextToLine(LatestLine, ListView.Items[i].Caption);
      for j := 0 to ListView.Items[i].SubItems.Count-1 do begin
        AddTextToLine(LatestLine, ListView.Items[i].SubItems[j]);
      end;
      MoveCompletedLineToList(Strings, LatestLine);
    end;
    Strings.SaveToFile(FileName, TEncoding.UTF8);
  finally
    Strings.Free;
  end;
end;

procedure ListViewLoadFromFile(ListView: TListView; const FileName: string);
var
  Strings: TStringList;
  i, j: Integer;
  Fields: TStringDynArray;
  Item: TListItem;
begin
  Strings := TStringList.Create;
  try
    Strings.LoadFromFile(FileName);
    ListView.Clear;
    for i := 0 to Strings.Count-1 do begin
      Fields := SplitString(Strings[i], #9);
      Item := ListView.Items.Add;
      Item.Caption := Fields[0];
      for j := 1 to high(Fields) do begin
        Item.SubItems.Add(Fields[j]);
      end;
    end;
  finally
    Strings.Free;
  end;
end;

KodeZwerg 5. Mär 2021 19:35

AW: Suche TMemo-Komponente mit Zeilenlänge > 1024
 
Zitat:

Zitat von mschaefer (Beitrag 1484516)
Man könnte es auch in eine TListView einlesen

Wenn alles in eine Zeile soll limitiert ein TListView noch stärker als es ein TMemo/TRichEdit macht.

Ja du splittest da etwas, aber das war ja nicht gefordert.

Ich glaub bei 260 (?) ist da aus die Maus.
Diese ganzen limits kommen nicht von Delphi, die Steuerelemente vom System sind dafür verantwortlich.

Lösung wurde ja gefunden :-)


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:48 Uhr.

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