Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi optimierung bei ersetzen in Richedit (https://www.delphipraxis.net/20876-optimierung-bei-ersetzen-richedit.html)

glkgereon 24. Apr 2004 17:12


optimierung bei ersetzen in Richedit
 
hi

ich hab einen text in etwa diesem format:

Zitat:

abcde fghasd
sdgf sdgfkghsd sdahfksd
und will den in dieses format umwandeln:

Zitat:

hsdkfh sdhfkhsdkfh sdhfkjsdhfksah
sdgfjghsdf sdahfksahdf sadfhksadf
soll heissen: ich hab buchstaben/zahlenpäckchen, und will sämtliche überflüssigen leerzeichen entfernen

das wollte ich so machen:

Delphi-Quellcode:
for i:=1 to length(Richedit1.lines.text) do
   begin
   if Richedit1.lines.text[i]=' '
   then if Richedit1.lines.text[i+1]=''
        then Richedit1.lines.delete(i);
   end;
das if...then if...then statt if ... and ... then
hab ich aus schnelligkeitsgründen gemacht...

so müsste doch funzen, oder?

jetzt mein problem: bei einem langen text brauch der ziemlich lange, um zu überlegen, was jetzt richedit1.lines.text ist...

der hammer ist: der text auf den ich das anwenden will ist :pale: 400 Millionen Zeichen lang!!!

kann man das anders machen?

yankee 24. Apr 2004 18:26

Re: optimierung bei ersetzen in Richedit
 
Delphi-Quellcode:
var start,Zeichen:integer;
begin
   start :=0;
   Zeichen:=RichEdit1.GetTextLen;
   repeat
   richedit1.SelStart :=richedit1.FindText(' ',start,zeichen,[stMatchCase]);
   richedit1.SelLength :=1;
   richedit1.SelText :='';
   inc(start);
   until start=zeichen
end;
Versuch's mal so. Naja, bei 400.000.000 Zeichen wird's mit Integer nicht mehr gehen (IntegerMax: 32767). Musst also LongInt nehmen, dass geht bis 2 147 483 647.

woki 24. Apr 2004 18:44

Re: optimierung bei ersetzen in Richedit
 
Hi,

1. Was um Himmels Willen sind überflüssige Leerzeichen
2. Minimiere die Aufrufe von Lines.text
3. Schau Dir mal Stringreplace an

Grüsse
Woki

glkgereon 24. Apr 2004 18:46

Re: optimierung bei ersetzen in Richedit
 
überflüssige leerzeichen: ich will das zwischen jedem pakjet an zahlen/zeichen genau 1 leerzeichen ist

mit selster, sellength seltext, ... hab ichs auch probiert, habs aber nicht hingekriegt...

@yankee
soweit istr weiss ist in d6 auf jeden fall integer immer ein longint....

Christian Seehase 24. Apr 2004 18:49

Re: optimierung bei ersetzen in Richedit
 
Moin Yankee,

Zitat:

Zitat von yankee
IntegerMax: 32767

Nein, integer ist bei einem 32 Bit Compiler 32 Bit gross mit Vorzeichen, und hat somit 2147483647 als Maximalwert.

glkgereon 24. Apr 2004 18:53

Re: optimierung bei ersetzen in Richedit
 
wie ich schon sagte :-D :-D :-D

woki 24. Apr 2004 18:56

Re: optimierung bei ersetzen in Richedit
 
4. Integer: 32 Bit mit Vorzeichen: Empfehlung mal ein Blick in die Delphi Hilfe

ups, zu spät

woki 24. Apr 2004 19:07

Re: optimierung bei ersetzen in Richedit
 
Zitat:

Zitat von glkbkk
überflüssige leerzeichen: ich will das zwischen jedem pakjet an zahlen/zeichen genau 1 leerzeichen ist

Schon verständlicher,
Was ist mit zeilenendekennungen, oder besteht dein Lines nur aus 1 'Zeile'

Grüsse
Woki

glkgereon 24. Apr 2004 19:13

Re: optimierung bei ersetzen in Richedit
 
ja, genau das kommt auch noch dazu, aber erst mal reicht mir das, aber hast du dafür schon ne lösung? *gier*, *haben* :-D :-D

woki 24. Apr 2004 19:46

Re: optimierung bei ersetzen in Richedit
 
Nun, wenn es um Leerzeichen am Anfang oder Ende eines Strings geht, dann wäre Trim (siehe OH) die Anwort.
Und halt die lines von der 1. bis zur letzten damit bearbeiten (for schleife)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.
Seite 1 von 2  1 2      

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