AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Delphi an das Ende eines memo's einen doppelpunkt setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi an das Ende eines memo's einen doppelpunkt setzen

Ein Thema von Lyan · begonnen am 27. Dez 2011 · letzter Beitrag vom 29. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#1

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:08
Zitat:
Ist aber völliger Schwachsinn!
... hast du den Schwachsinn mal ausprobiert ? Was kommt dabei raus ?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:15
Das ist total OFF-Topic, aber total geil deswegen muss das mal gesagt werden^^
Zitat:
ich möchte eine Liste abarbyten.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#3

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:26
Zitat:
Ist aber völliger Schwachsinn!
... hast du den Schwachsinn mal ausprobiert ? Was kommt dabei raus ?
Bei paar tausend Zeilen, oder auch 1 Million Zeilen, kann das dann schon hängen mit einer Schleife

Habs mit 1565 Zeilen versucht, dauert ewig!
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#4

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:32
'ne TStringList nehmen
abarbeiten
und dann in's TMemo kopieren

sollte einiges schneller sein
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:33
Füge diese Zeilen ein:

Delphi-Quellcode:
Memo1.Lines.BeginUpdate

... //Bearbeitung ...

Memo1.Lines.EndUpdate;
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#6

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:43
Füge diese Zeilen ein:

Delphi-Quellcode:
Memo1.Lines.BeginUpdate

... //Bearbeitung ...

Memo1.Lines.EndUpdate;
Habe es nun so gemacht:

Code:
procedure TForm1.pSetzedoppel;
var i : Integer;
begin
  progressbar1.position := 0;
  for i := 1 to memo1.Lines.count do
  begin
    Memo1.Lines.BeginUpdate;
    memo1.Lines[i] := memo1.Lines[i] + ':';
    progressbar1.position := i;
    application.ProcessMessages;
    Memo1.Lines.EndUpdate;
  end;
end;
Gibts sonst noch andere methoden um eine liste abzuarbyten?
die performance würde ich schon gerne erhöhen.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:53
Code:
procedure TForm1.pSetzedoppel;
var i : Integer;
begin
  progressbar1.position := 0;
  for i := 1 to memo1.Lines.count do
  begin
    Memo1.Lines.BeginUpdate;
    memo1.Lines[i] := memo1.Lines[i] + ':';
    progressbar1.position := i;
    application.ProcessMessages;
    Memo1.Lines.EndUpdate;
  end;
end;
Nimm BeginUpdate und EndUpdate mal aus der Schleife raus und setz sie außerhalb:
Delphi-Quellcode:
procedure TForm1.pSetzedoppel;
var i : Integer;
begin
  progressbar1.position := 0;
  Memo1.Lines.BeginUpdate;
  for i := 1 to memo1.Lines.count do
  begin
    memo1.Lines[i] := memo1.Lines[i] + ':';
    progressbar1.position := i;
    application.ProcessMessages;
  end;
  Memo1.Lines.EndUpdate;
end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 19:55
Hallo,

BeginUpdate vor der Schleife
EndUpdate noch der Schleife.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 20:05
Erstmal ist es totaler "Schachsinn" überhaupt soviele Zeilen in einem Memo verarbeiten zu wollen.
Wer will sich das alles ansehn?

TStringList geht schneller, da hier jede Zeile "einzeln" ist und damit alles schnell verarbeitet wird.
(Memo.Text > StringList.Text > die StringList verarbeiten > StringList.Text > Memo.Text)

TMemo ist nunmal nicht für eine massenhafte String-Verarbeitung geeignet, denn dort befindet sich alles in einem Speicherblock, also für das Einfügen eines Zeichens am Anfang werden alle nachfolgenden Zeichen verschoben.
und bei 1 Mio. Zeilen muß da viel verschoben werden.

Ohne BeginUpdate wird dabei auch noch jedesmal die GUI geupdatet, was dann nochmals massig Rechenleistung verbrät.

usw.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#10

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 20:21
Also um mal kurz zu erwähnen was ich machen möchte:
Das Programm wird ein FTP-Checker.

Man soll eine Liste angeben können in folgendem Format:

IP:USERASS

Beispiel:
Code:
888.888.888:username:passwort
533.45.2342.3:usr2:pw123
223.234.123.3:usss:pwww
Ich versuche momentan halt anhand des doppelpunktes die IP, den USERNAME und das PASSWORT auseinander zu halten.

Problematik liegt halt an meinen Kenntnissen. Ich zeige euch mal wie ichs mit meinen wenigen Kenntnissen versucht habe zu Lösen:

Also im Idealfall sollte mein Kod so aussehen:

Code:
888.888.888:username:passwort:
533.45.2342.3:usr2:pw123:
223.234.123.3:usss:pwww:
Wenn ich davon ausgehe, dann läuft mein Prog. so:

Ich entferne zunächst mal "#$D#$A" in dem Memo mit stringreplace und schreibe den neuen Inhalt in einen String.
Dieser String sieht dann ja so aus:

Code:
888.888.888:username:passwort:533.45.2342.3:usr2:pw123:223.234.123.3:usss:pwww:
Nun ermittle ich mit Pos() den ersten Doppelpunkt und kopiere mit Copy() die IP (also die "888.888.888") und schreibe sie in meine Variable (sIP).

Nun lösche ich per Delete() die IP und den dazugehörigen Doppelpunkt (888.888.888.

Ja und in einem Schleifendurchgang werden immer "IP,USERNAME,PASSWORD" ermittelt und auf Verbindung getestet. Wenn eine Verbindung möglich war, so wird in eine Strinlist die Daten hinzugefügt.

Also "Strlist.add(IP+USER+PASS+#13#10);

Nun das Problem:

Wenn meine Liste nun so aussehen würde:

Code:
888.888.888:username:passwort
533.45.2342.3:usr2:pw123
223.234.123.3:usss:pwww
Dann muss ich ja noch Doppelpunkte setzen (vorher).
Und mit der eben genannten Methode, nerven wieder diese "#$D#$A".
Hat jemand eine Idee wie ich die Liste in mein Idealformat bekomme?
Oder weiß jemand, wie ich sowas vlt. auf eine ganz andere, viel bessere Art und Weise Lösen könnte?

MfG

Geändert von Lyan (27. Dez 2011 um 20:28 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:58 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