![]() |
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:
Das Problem: Es werden mir bei der Zuweisung in den Temporären String Zeichen gekürzt.
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 hier:
Code:
Wird also im zweiten Memo-Ausgabefeld dazu:
[b][color=skyblue]{TITLE}[/color][/b]
{TEXT} Größe: {SIZE} [url={DL}][b][color=red]Download[/color][/b][/url] {ADD} --------------------------------------------------------------------------------
Code:
Es werden hauptsächlich Sonderzeichen unterschlagen und das erste Zeichen anscheinend überall. Was kann ich dagegen tun?
skyblue]{TITLE}[/color][/b]
TEXT} röße: {SIZE} {DL}][b][color=red]Download[/color][/b][/url] ADD} ------------------------------------------------------------------------------- |
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 |
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: |
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 05:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz