Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Memo Zeile lässt sich nicht komplett auslesen (https://www.delphipraxis.net/89264-memo-zeile-laesst-sich-nicht-komplett-auslesen.html)

Radon 28. Mär 2007 18:47


Memo Zeile lässt sich nicht komplett auslesen
 
Hi

Ich habe folgendes vor: Es existieren zwei Memofelder. In das erste trägt man so eine Art Maske ein, wobei man Variablen benutzen kann, die in eckigen Klammern stehen.
Nun sollen sie bei einem Klick auf den Button einzeln in einen temporären String gelesen werden (zeilenweise), dort dann bearbeitet werden, sprich die entsprechenden Variablen sollen ersetzt werden, dann landet das alles in das zweite Memofeld, was dann als Ausgabe dient.

Der Quellcode:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    sETitle: TLabeledEdit;
    sESize: TLabeledEdit;
    sELength: TLabeledEdit;
    sEText: TMemo;
    sEDL: TLabeledEdit;
    sEAdd: TLabeledEdit;
    sELayout: TMemo; // Das erste Textfeld, wo die Maske reingeschrieben wird
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Textfeld: TMemo; // Das Ausgabefeld
    BtnGenerate: TButton;
    BtnDefault: TButton; // Die Prozedur schreibt auf Wunsch eine vorgefertigte Maske in das Layout-Feld
    procedure BtnGenerateClick(Sender: TObject);
    procedure BtnDefaultClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnGenerateClick(Sender: TObject);
var
  sTempLine, sTTitle, sTText, sTSize, sTLength, sTAdd, sTDl: string;
  sTempChar: char;
  n: integer;
begin

  for n := 0 to sELayout.Lines.Count - 1 do begin
    sTempLine := sELayout.Lines.ValueFromIndex[n];
    //ShowMessage(sELayout.Lines.ValueFromIndex[n]);
    Textfeld.Lines.Add(sTempLine);
  end;

end;

procedure TForm1.BtnDefaultClick(Sender: TObject);
begin
  sELayout.Lines.Add('[b][color=skyblue]{TITLE}[/color][/b]');
  sELayout.Lines.Add('');
  sELayout.Lines.Add('{TEXT}');
  sELayout.Lines.Add('');
  sELayout.Lines.Add('Größe: {SIZE}');
  sELayout.Lines.Add('[url={DL}][b][color=red]Download[/color][/b][/url]');
  sELayout.Lines.Add('');
  sELayout.Lines.Add('{ADD}');
  sELayout.Lines.Add('-----------------------------------------------');
end;

end.
Das Problem: Es werden mir bei der Zuweisung in den Temporären String Zeichen gekürzt.

Das hier:

Code:
[b][color=skyblue]{TITLE}[/color][/b]

{TEXT}

Größe: {SIZE}
[url={DL}][b][color=red]Download[/color][/b][/url]

{ADD}
--------------------------------------------------------------------------------
Wird also im zweiten Memo-Ausgabefeld dazu:

Code:
skyblue]{TITLE}[/color][/b]

TEXT}

röße: {SIZE}
{DL}][b][color=red]Download[/color][/b][/url]

ADD}
-------------------------------------------------------------------------------
Es werden hauptsächlich Sonderzeichen unterschlagen und das erste Zeichen anscheinend überall. Was kann ich dagegen tun?

stefanniehaus 28. Mär 2007 19:39

Re: Memo Zeile lässt sich nicht komplett auslesen
 
Moin!

Hast du die Bedeutung von ValueFromIndex mal durchgelesen?
Ich denke, das ist nicht das, was du brauchst.

Verwende statt
sELayout.Lines.ValueFromIndex[n]
einfach
sELayout.Lines[n]

und es funktioniert ;)

Gruß
Stefan

Radon 28. Mär 2007 21:07

Re: Memo Zeile lässt sich nicht komplett auslesen
 
Hey klasse, das funktioniert =D

Das ValueFromIndex hatte für mich den meisten Sinn ergeben und in gewisser Weise ja auch geklappt ;)

Aber nu hab ichs ja.

Thx! :love:

stefanniehaus 28. Mär 2007 21:11

Re: Memo Zeile lässt sich nicht komplett auslesen
 
Ja, es gibt viele Funktionen, die ähnliches machen; aber nur wenige, die das machen, was man eigentlich haben will :lol:


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