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 Text aus RichEdit-Feld auslesen....... (https://www.delphipraxis.net/62900-text-aus-richedit-feld-auslesen.html)

Akku 11. Feb 2006 01:03


Text aus RichEdit-Feld auslesen.......
 
Servus,
... ich krieg hier noch die Krise...

ich versuch hier seid geraumer Zeit den Text aus einem RichEdit-Feld auslesen.
Das klingt einfach, aber dadurch, dass in RichEdit alles in Lines aufgeteilt ist, komm ich einfach nicht an Text im Gesamten dran.
Ich habe gelesen, dass das über MyRichEdit.Text funktionieren soll. Aber ich habe auch gelesen, dass in dieser Property genausogut nur die Caption ausgelesen werden kann. Und das ist genau das, was mir passiert.

Meine Codezeile sieht wie folgt aus:
Delphi-Quellcode:
MyRichEdit.Text[i]
Das Problem ist aber, wie angesprochen, dass ich über die Property nur den Dateinamen der Datei bekomme, die in das RichEdit-Objekt geladen wurde.

Kann mir irgendjemand weiterhelfen?

Danke - Gruß Max

Christian Seehase 11. Feb 2006 01:25

Re: Text aus RichEdit-Feld auslesen.......
 
Moin Max,

mit der Zeile greifst Du auf das erste Zeichen des Inhaltes zu.
Lässt Du die [1] weg, erhältst Du den ganzen Inhalt.

Akku 11. Feb 2006 11:12

Re: Text aus RichEdit-Feld auslesen.......
 
das ist leider keine 1, sondern ein i, ich möchte nämlich auf das i-te Zeichen im Text zugreifen, ohne die dazugehörige Zeilennummer wissen zu müssen.
Außerdem hab ich ja gerade das Problem, dass die Rückgabe der Property Text, wenn ich im Debug-Modus den Wert abfrage, eben nicht der Textinhalt ist, sondern der Dateiname, sprich 'test.txt'. Wenn ich jetzt mit meinem Index i auf das 20. Zeichen zugreifen will, gibt's natürlich einen Fehler, weil der Dateiname keine 20 Zeichen enthält.

:(

Benedikt 11. Feb 2006 11:46

Re: Text aus RichEdit-Feld auslesen.......
 
Hi, also unabhängig davon das ich bei mir mit RichEdit.Text auf den Text des RichEdits zugreifen kann, probier es doch mal mit RichEdit.Lines.Text...

MfG Benedikt Loepp

Akku 11. Feb 2006 16:51

Re: Text aus RichEdit-Feld auslesen.......
 
also - schonmal herzlichen Dank für die Antwort!! - das bringt mich zumindest schon mal ein kleines Stück weiter.
Jetzt kann ich immerhin im Debug-Modus per Strg+F7 über MyRichEdit.Lines.Text des Text auslesen, der in meinem RichEdit-Feld drin steht.

Soweit so gut. Wenn ich jetzt aber per Index auf ein Element zugreifen möchte, beispielsweise
Delphi-Quellcode:
MyRichEdit.Lines.Text[5]
bekomme ich wieder eine Access-Violation, obwohl
Delphi-Quellcode:
length(MyRichEdit.Lines.Text)
als 983 angegeben wird, und das 5. Zeichen auch weitab jegweder Steuerzeichen, wie Zeilenumbruch oder so etwas ist.
Was mich noch mehr verwirrt: Die Property Text ist laut Hilfe vom Typ String. Jetzt habe ich mal per
Delphi-Quellcode:
var tmpString: String;
[...]
tmpString := MyRichEdit.Lines.Text;
versucht den Text umzukopieren - und was passiert ist, dass tmpString nach dem Kopiervorgang leer bleibt. !?
:gruebel:

also ich versteh das nicht.

Jeder Ratschlag willkommen...

Gruß Max


P.S.: Ich bentze Delphi 5, wenn das vielleicht eine Hilfe ist.

Christian Seehase 11. Feb 2006 17:50

Re: Text aus RichEdit-Feld auslesen.......
 
Moin Max,

also so richtig nachvollziehen kann ich das nicht :gruebel:
Wenn in dem RichEdit etwas drin steht, muss dass gehen.
Es gibt keinen vernünftigen Grund, warum es zu einem Problem kommen sollte.
Vielleicht kann ein grössere Codeabschnitt hier Klarheit bringen, aber anhand dessen, was Du bisher geschrieben hast, kann ich keinen Fehler erkennen.

Zum Thema umkopieren der Eigenschaft Text in einen String:
Wenn man mehrfach auf Text zugreifen müsste, ist das umkopieren sinnvoller, da Text, bei jedem Zugriff, aus den Zeilen zusammengesetzt wird, und so die Performance bei direktem Zugriff sehr schlecht ist. (gilt auch für das Schreiben in Text)

Akku 11. Feb 2006 22:54

Re: Text aus RichEdit-Feld auslesen.......
 
Der Tipp mit dem Kopieren klingt schon mal interessant - danke!

Hier ist erstmal der Codeausschnitt, vielleicht hilft das weiter.
Ich habe hier eine DropDownlist und möchte einen darin selektierten Text in das RichEdit-Element einfügen. Dabei soll, falls das nochfolgende Wort im Text kein Sonderzeichen ist, dieses durch den Text Listeneintrag ersetzt werden.

Delphi-Quellcode:
procedure TMDIChildEditor.selectItemOfMemberList;
var
  pos, i: Integer;
  Text : String;
begin
  with RiEdEditor do
  begin
    if SelLength = 0 then
    begin
      pos := SelStart;
      i := 0;
      Text := Lines.Text;
      while IsCharAlphanumeric(Text[pos + i]) do i := i + 1;
      SelLength := i;
    end;
    SelText := lbMemberList.Items[lbMemberList.ItemIndex];
  end;

  hideMemberList;
end;
In der Zeile "Text := Lines.Text;" kann ich im Debugmodus aus Lines.Text den Text auslesen - Text bleibt leer.

Gruß Max - und danke für die Hilfe!

Christian Seehase 11. Feb 2006 23:44

Re: Text aus RichEdit-Feld auslesen.......
 
Moin Max,

ich denke, Du solltest Dir mal Gedanken um die Benennung Deiner Bezeichner machen ;-)
Du hast eine Variable Text deklariert, und arbeitest anschliessend mit with ... do.
Innerhalb des with-do-Blocks sprichst Du jetzt Text an, hierbei wird aber nicht die Variable angesprochen, sondern die Eigenschaft Text des RichEdit.
Falls Du nicht gerade Warnungen abgeschaltet hast, müsstest Du die Warnung erhalten, dass Du eine Variable (in diesem Falle Text) deklariert hast, aber nicht benutzt.
Mit anderen Worten:
Die Variable Text bleibt leer, da Du die Eigenschaft Text des RichEdit mit sich selber füllst ;-)

Akku 11. Feb 2006 23:56

Re: Text aus RichEdit-Feld auslesen.......
 
danke!!!! :wall: :wall:
ich versteh zwar nicht warum RiEdEditor.Text am Anfang nicht tat, aber jetzt funtzt's! - das war die Lösung! - klasse! :firejump:


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