Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi RichEdit.Lines in Array/Variable (https://www.delphipraxis.net/31119-richedit-lines-array-variable.html)

StanY 4. Okt 2004 16:37


RichEdit.Lines in Array/Variable
 
Ich habe auf meiner Form (Form1) eine RichEdit (RichEdit1) Komponente.

Den Inhalt müsste ich nun in eine Variable/ein Array speichern und abrufen können, nur leider will das nicht so recht \:.

Versucht habe ich schon:
Delphi-Quellcode:
var
  tVar: TStrings;
begin
  tVar := RichtEdit1.Lines
end;
Das ist zwar ohne weiteres Möglich, allerdings scheint es nicht wirklich gespeichert zu sein, denn bei:
Delphi-Quellcode:
var
  tVar: TStrings;
begin
  RichEdit1.Lines := tVar;
end
Passiert gar nichts. \:

Dann geht es auch nicht, die Variable in ein Array zu speichern:
Delphi-Quellcode:
var
  tArray: Array of String;
  i: Integer;
begin
  SetLength(tArray,RichEdit1.Lines.Count);
  for i := 0 to RichEdit1.Lines.Count do begin
    tArrray[i] := RichEdit1.Lines.Strings[i];
  end;
end;
denn da gibt es ein 'Acces violation bla' zur Laufzeit.

Den Inhalt des RichEdit in ein Array zu speichern und es dann Zeilenweise auszulesen und in RichEdit1.Lines.Strings[i] zu packen, funktioniert auch nicht.

Wie ist das nun möglich? So schwer kann das ja nicht sein...

(Btw. die Variablen, die ich hier gesetzt hab sind im eigentlichen Programm private Variablen)

Vielen Dank schonmal im Vorraus.

Matze 4. Okt 2004 16:42

Re: RichEdit.Lines in Array/Variable
 
Delphi-Quellcode:
var
  tArray: Array of String;
  i: Integer;
begin
  SetLength(tArray,RichEdit1.Lines.Count);
  for i := 0 to RichEdit1.Lines.Count do begin // <== Fehler
    tArrray[i] := RichEdit1.Lines.Strings[i];
  end;
end;
Richtig wäre:

Delphi-Quellcode:
for i := 0 to RichEdit1.Lines.Count - 1 do

Edit: Tags korrigiert

StanY 4. Okt 2004 17:48

Re: RichEdit.Lines in Array/Variable
 
Delphi-Quellcode:
var
  i: Integer;
begin
  for i := 0 to Length(SFile[Num].Source)-1 do begin
    redSource.Lines.Strings[i] := SFile[Num].Source[i];
    ShowMessage(SFile[Num].Source[i]);
  end;
end;
Danke schonmal... (:

Aber, hier noch eine Frage:
Er fügt bei diesem Teil lediglich eine Zeile Zeile zu redSource (RichEdit) hinzu.

Mit ShowMEssage zeigt er aber alle Zeilen an... Warum? ^^

Also, z.b.

ShowMessage gibt hintereinander aus:
'bla erste zeile'
'bla zweite zeile'

aber in dem RichEdit-Ding steht halt nur
'bla erste zeile'

Warum? ^^

Matze 4. Okt 2004 17:51

Re: RichEdit.Lines in Array/Variable
 
Du müsstest so für jede zeile ein extra Dialog bekommen (er wird in der Schleife aufgerufen).

StanY 4. Okt 2004 17:54

Re: RichEdit.Lines in Array/Variable
 
Zitat:

Zitat von Matze
Du müsstest so für jede zeile ein extra Dialog bekommen (er wird in der Schleife aufgerufen).

Wenn du den ShowMessage Dialog meinst: ja.

Nur warum steht es dann nicht richtig in dem Rich-Edit-Textfeld? oO

Matze 4. Okt 2004 18:00

Re: RichEdit.Lines in Array/Variable
 
Versuche mal mit Lines.Add('...') die zeile hinzuzufügen, ich weiß nicht, ob es sonst geht, wenn die zeilen nicht vorhanden sind.

StanY 4. Okt 2004 18:04

Re: RichEdit.Lines in Array/Variable
 
Das geht. Danke. (:

Da hätte ich aber auch drauf kommen können ^^

Luckie 4. Okt 2004 18:05

Re: RichEdit.Lines in Array/Variable
 
Delphi-Referenz durchsuchenTStrings ist nur eine abstrakte Klasse ohne implementation der Methode / Eigenschaften. Sie dient nur als Grundgerürt zum Ableiten von anderen Klassen. Nimm Delphi-Referenz durchsuchenTStringlist und es sollte klappen. Allerdings solltest du vorher auch noch eine Instanz der Klasse mit Delphi-Referenz durchsuchenCreate erzeugen.

StanY 4. Okt 2004 19:01

Re: RichEdit.Lines in Array/Variable
 
Zitat:

Zitat von Luckie
Delphi-Referenz durchsuchenTStrings ist nur eine abstrakte Klasse ohne implementation der Methode / Eigenschaften. Sie dient nur als Grundgerürt zum Ableiten von anderen Klassen. Nimm Delphi-Referenz durchsuchenTStringlist und es sollte klappen. Allerdings solltest du vorher auch noch eine Instanz der Klasse mit Delphi-Referenz durchsuchenCreate erzeugen.

Nun belasse ich das bei der Methode, aber danke.

Werde das wohl sicher bei dem IRC clienten verwenden (:

bigg 4. Okt 2004 19:15

Re: RichEdit.Lines in Array/Variable
 
mit einer stringlist kann man sich aber einiges an quellcode sparen.

Code:
List.Text := Richedit.Lines.Text;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 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