AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Mehere zeilen ohne schleife aus memo "hohlen"??
Thema durchsuchen
Ansicht
Themen-Optionen

Mehere zeilen ohne schleife aus memo "hohlen"??

Ein Thema von Nepos · begonnen am 21. Feb 2006 · letzter Beitrag vom 22. Feb 2006
Antwort Antwort
Nepos

Registriert seit: 24. Okt 2004
Ort: Kiel
22 Beiträge
 
Delphi 7 Enterprise
 
#1

Mehere zeilen ohne schleife aus memo "hohlen"??

  Alt 21. Feb 2006, 16:05
Hallo mal wieder...

ich hab das prob das ich bisher immer wenn ich von einem Memo die zeilen von zb 5-100 in ein anderes memo kopieren wollte es mit einer schleife gemacht habe... so zb:

Delphi-Quellcode:
for loop:=5 to 100 do
 memo2.lines.add(memo1.lines[loop]);
das dauert aber immer sehr lange! Gibt es da ne elegantere lösung?

ich habe leider nichts im internet gefunden... eventuell hatte ich auch nur die falschen stichwörter.

Könnt ihr mir weiter helfen?

viele grüße Martin
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mehere zeilen ohne schleife aus memo "hohlen"?

  Alt 21. Feb 2006, 16:13
Hai Nebos,

eventuell kannst Du das ganze ja schon dadurch beschleunigen das Du vor deine Schleife ein [oh]BeginUpdate;[/oh] für das "Zielmemo" setzt und danach natürlich ein Delphi-Referenz durchsuchenEndUpdate.

Delphi-Quellcode:
begin
  Memo2.Lines.BeginUpdate;
  for loop:=5 to 100 do
  begin
    memo2.lines.add(memo1.lines[loop]);
  end;
  Memo2.Lines.EndUpdate;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
21. Feb 2006, 16:14
Dieses Thema wurde von "Sharky" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Memo? Passt besser zu VCL
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: Mehere zeilen ohne schleife aus memo "hohlen"?

  Alt 21. Feb 2006, 19:12
Hallo,

etwas ungewöhnlich aber schneller als mit einer Schleife
Delphi-Quellcode:
var i : Integer;
begin
  i := Memo1.Perform(EM_LINEINDEX, 501, 0);
  Memo2.Lines.BeginUpdate;
  Memo2.Lines.Add(Copy(Memo1.Text,1,i-2));
  Memo2.Lines.EndUpdate;
Nachtrag: (nicht genau gelesen) > Zeile 5-500
Delphi-Quellcode:
var j,i : Integer;
begin
  j := Memo1.Perform(EM_LINEINDEX, 5, 0);
  i := Memo1.Perform(EM_LINEINDEX, 501, 0);
  Memo2.Lines.BeginUpdate;
  Memo2.Lines.Add(Copy(Memo1.Text,j,i-2));
  Memo2.Lines.EndUpdate;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#5

Re: Mehere zeilen ohne schleife aus memo "hohlen"?

  Alt 22. Feb 2006, 10:38
Ich habe es nicht ausprobiert, aber ich glaube Begin + EndUpdate ist bei einem einzigen Add nicht erforderlich.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

Re: Mehere zeilen ohne schleife aus memo "hohlen"?

  Alt 22. Feb 2006, 11:44
Das mag stimmen, aber hier sind es 96

Delphi-Quellcode:
for loop:=5 to 100 do
  memo2.lines.add(...);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Thorben77

Registriert seit: 22. Okt 2004
359 Beiträge
 
#7

Re: Mehere zeilen ohne schleife aus memo "hohlen"?

  Alt 22. Feb 2006, 11:57
Zitat von himitsu:
Das mag stimmen, aber hier sind es 96

Delphi-Quellcode:
for loop:=5 to 100 do
  memo2.lines.add(...);
Da ist es aber nur eins :

Zitat von Lannes:
Delphi-Quellcode:
var j,i : Integer;
begin
  j := Memo1.Perform(EM_LINEINDEX, 5, 0);
  i := Memo1.Perform(EM_LINEINDEX, 501, 0);
  Memo2.Lines.BeginUpdate;
  Memo2.Lines.Add(Copy(Memo1.Text,j,i-2));
  Memo2.Lines.EndUpdate;
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#8

Re: Mehere zeilen ohne schleife aus memo "hohlen"?

  Alt 22. Feb 2006, 12:26
Moin, moin,

also Prinzipiell gibt es noch einen anderen Weg. Zugriff über Memo.Lines.Text ergibt den ganzen Memotext als String.
Die einzelnen Zeilen sind durch #10#13 voneinander getrennt. Damit könnte man die #10#13 bis zur Startzeile zählen und dann die #10#13 bis zur Endzeile. Beide Positionen werden zwischengespeichert und der Bereich dann mit Copy herauskopiert. Wie sich das zeitlich verhält weiss ich nicht. Das hängt im Wesentlichen von einer schnellen erweiterten Pos-Suche ab.


PS: Die neueren Delphi-Versionen haben meines Erachtens einige weitere Stringfunktionen und ich meine auch schonmal ein Pos-Routine in Assembler gesehen zu haben...

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#9

Re: Mehere zeilen ohne schleife aus memo "hohlen"?

  Alt 22. Feb 2006, 12:36
Zitat von mschaefer:
also Prinzipiell gibt es noch einen anderen Weg. Zugriff über Memo.Lines.Text ergibt den ganzen Memotext als String. ...
Der Nachteil dabei ... .Lines.Text liest erstmal alle Lines[] aus und setzt diese zu einem einzigem String zusammen, was auch nicht gerade schnell und eventuell auch noch speichersparend ist.

Zitat von mschaefer:
PS: Die neueren Delphi-Versionen haben meines Erachtens einige weitere Stringfunktionen und ich meine auch schonmal ein Pos-Routine in Assembler gesehen zu haben...
Oder du hast meine gesehen (in der CodeLib),
aber wenn ich mich recht erinnere, sind die Standard-Routinen von Delphi auch schon in ASM (oder umschaltbar in ASM und Pascal)

z.B. Code-Library -> Object-Pascal / Delphi-Language
(Teil)String in anderem String suchen/zählen
Zeile aus String extrahieren
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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