![]() |
Text zerlegen
Hallo
Ich schreib grad folgendes Delphi Programm (Delphi 3):
Delphi-Quellcode:
Das ausschmücken mach ich später noch
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) MEMO1: TMemo; Button1: TButton; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; Memo5: TMemo; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; t1: integer ; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin T1:= strToInt(Memo1.Text); end; end. Ich habe ein großes memo. In dieses soll ein Text eingefügt werden (Strg + V) Wenn man auf den Button klickt, dann soll der Text in die andere Memos Felder zerlegt werden und zwar mit jeweils 510 Zeichen! Bitte um Hilfe :wall: |
Re: Text zerlegen
Ich schätze, t1 soll die Länge des Textes in Memo1 enthalten. Dann wäre der Code aber so:
Delphi-Quellcode:
t1 := Length(Memo1.Text)
|
Re: Text zerlegen
das würd ich so machen:
Delphi-Quellcode:
können noch fehler drinsein, aber sollte vom prinzip her klappen...
for i:=1 to length(Memo.Lines.Text) div 510 do//wieviele memos werden gebrauch?
begin TMemo(findcomponent('Memo'+inttostr(i))):=copy(Memo.Lines.Text,0,510);//text übertragen delete(memo1.Lines.Text,0,510);//text aus 1. memo löschen end; TMemo(findcomponent('Memo'+inttostr(i+1))):=Memo.Lines.Text;//rest des textes löschen |
Re: Text zerlegen
sorry, ich check das ganze noch nicht so...
kannst du mir bitte den genauen Quelltext geben? |
Re: Text zerlegen
also, nochma besser kommentiert und übersichtlicher
Delphi-Quellcode:
da du in jede memo 510 zeichen haben willst, ermittel ich, wie viele memos ich brauch und durchlaufe so oft
for i:=1 to length(Memo.Lines.Text) div 510 do
begin
Delphi-Quellcode:
ermittelt die memo mit dem namen "Memo"+ die laufende nummer i
TMemo(findcomponent('Memo'+inttostr(i)))
also die memo wo jetzt reingeschrieben werden soll
Delphi-Quellcode:
kopiert die ersten 510 zeichen aus der ausgangsmemo
copy(Memo.Lines.Text,0,510);
Delphi-Quellcode:
das kopiert also die ersten 510 zeichen der ausgangsmemo in die memo mit der laufenden nummer i
TMemo(findcomponent('Memo'+inttostr(i))).Lines.Text:=copy(Memo.Lines.Text,0,510);
Delphi-Quellcode:
hier lösche ich den bereits kopierten text (510 zeichen) aus der ausgangsmemo
delete(memo1.Lines.Text,0,510);
end; ende der schleife
Delphi-Quellcode:
nun wird der komplette rest (also rest -> zeichenanzahl mod 510) in die nächte memo kopiert
TMemo(findcomponent('Memo'+inttostr(i+1))).Lines.Text:=Memo.Lines.Text;
Memo.Clear; danach wird als letztes die ausgangsmemo geleert (der code ist leicht anders als der vorige, da mir da tippfehler unterlaufen sind :wink: ) |
Re: Text zerlegen
hi,
für was braucht man so nen programm?! würd mich mal intressieren ^^ |
Re: Text zerlegen
also, ich habs mal versuch...
bei der Zeile mit dem Copy gibt er folgenden Fehler aus: Operator oder Semikolon fehlt |
Re: Text zerlegen
@pjuk
Für Hardware, die nur soviel aufnehmen kann ;-) |
Re: Text zerlegen
scheint primitiv zu sein xD.
dacht gleich an sms aufgrund der anzahl von zeichen... deswegen hab ich gefragt :) |
Re: Text zerlegen
fürs testen vielleicht??
ich würds einfacher machen und zwar die einzelnen chars rüberkopieren
Delphi-Quellcode:
for i := 1 to 510 do
Memo2.text[i] := Memo1.text[i]; :stupid: |
Re: Text zerlegen
Zitat:
also, diese beiden befehle: TMemo(findcomponent('Memo'+inttostr(i))) copy(Memo.Lines.Text,0,510) habbich erstmal einzeln erklärt.... und dann die kombination.... also, hier nochma der code:
Delphi-Quellcode:
deine ausgangsmemo heisst Memo und die anderen memo1, memo2, ..., memon
for i:=1 to length(Memo.Lines.Text) div 510 do
begin TMemo(findcomponent('Memo'+inttostr(i))).Lines.Text:=copy(Memo.Lines.Text,0,510); delete(memo1.Lines.Text,0,510); end; TMemo(findcomponent('Memo'+inttostr(i+1))).Lines.Text:=Memo.Lines.Text; Memo.Clear; |
Re: Text zerlegen
Hi Nicodius,
Dein Vorschlag ist zwar korrekt, aber nicht sehr effektiv, da bei jedem Zuweis an Text das Memo imho neu gezeichnet wird. So ähnlich wäre es imho besser:
Delphi-Quellcode:
mfG
Memo2.Text := Copy(Memo1.Text, 1, 510);
mirage228 |
Re: Text zerlegen
jetzt sagt er:
bei der delete zeile: Konstantenobjekt kann nicht als VAR-Parameter weitergegeben werden zum richtig abschreiben: Ich kopier sie aus dem Forum raus ;-) |
Re: Text zerlegen
naja die komponenten musst du schon so ändern dass sie zu deinem source passen.
solltest nicht vergesses alles zu hinterlegen. |
Re: Text zerlegen
und wie?
das ganze sieht bis jetzt so aus
Code:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo: TMemo; Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; Memo5: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; t1, i: integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin for i:=1 to length(Memo.Lines.Text) div 510 do begin TMemo(findcomponent('Memo'+inttostr(i))).Lines.Text:=copy(Memo.Lines.Text,0,510); delete(memo.Lines.Text,0,510); end; TMemo(findcomponent('Memo'+inttostr(i+1))).Lines.Text:=Memo.Lines.Text; Memo.Clear; end; end. |
Re: Text zerlegen
in bezug auf was?
den code anpassen oder was meinst du? |
Re: Text zerlegen
Zitat:
Delphi-Quellcode:
kann auch nicht funktionieren, da
delete(memo1.Lines.Text,0,510);
![]() So z.B.:
Delphi-Quellcode:
mfG
var
s: string; begin s := memo1.lines.text; delete(s, 0, 510); memo1.lines.text := s; end; mirage228 Edit: BB-Code Fehler verbessert - zum X-ten mal :mrgreen: |
Re: Text zerlegen
Delphi-Quellcode:
TMemo(findcomponent('Memo'+inttostr([b]i[/b]+1))).Lines.Text:=Memo.Lines.Text;
wie das funktioniert versteh ich nicht entweder ist i nil oder i ist nach der schleife 540 ... andere möglichkeiten gibt es nicht .. das kann also nicht funktionieren |
Re: Text zerlegen
sorry, aber ich bin halt noch ´n newbie
Ich checks immer noch nicht. kann mir niemand den kompletten Quelltext schreiben? |
Re: Text zerlegen
Zitat:
mfG mirage228 |
Re: Text zerlegen
:mrgreen: ich würds mit dem copy machen :thumb:
|
Re: Text zerlegen
wieso???
wieso sollte i 540 sein??? also ich mein es ginge...zur sicherheit machs halt als while schleife...also so:
Delphi-Quellcode:
also bei mir funzt das...
i:=0;
while i<length(Memo.Lines.Text) div 510 do begin inc(i); TMemo(findcomponent('Memo'+inttostr(i))).Clear; TMemo(findcomponent('Memo'+inttostr(i))).Lines.Text:=copy(Memo.Lines.Text,0,510); s:=Memo.Lines.Text; delete(s,0,510); Memo.Lines.Text:=s; end; TMemo(findcomponent('Memo'+inttostr(i+1))).Lines.Text:=Memo.Lines.Text; Memo.Clear; es kann noch zu nem error kommen wenn halt zuwenig memos da sind...aber das kannst du machen... |
Re: Text zerlegen
weil nach der schleife i anders ist ;)
|
Re: Text zerlegen
und wieso gerade 540?
ich mein das hat doch keinen sinn, oder? |
Re: Text zerlegen
sorry meinte 510
|
Re: Text zerlegen
nein, wenn überhaupt hätte i in dem fall den wert length(Memo.Lines.Text) div 510 gehabt...darauf habbich gehofft
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 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