Lines aus Memo löschen
lima-city → Forum → Programmiersprachen → Delphi & Pascal
anzahl
beitrag
client
connections
count
denke mal
ebenfall
entschuldigung
insert
komisch vorkommen
memo
prozedur
schleifen
schreiten
sender
socket
spuren
string
variable
zeile
-
Moin Moin,
ich will Strings aus einer Memo löschen, die bekannt sind, das heißt ich überprüfe mit einer for-schleife jede Line ob dieser identisch ist und wenn ja, dann soll es gelöscht werden, hab auch etwas geschrieben, funktioniert allerdings nur einmal
die schleife steht übrigens in einer TForm1.ServerClientRead prozedur, das heißt, dass jedes mal wenn der server etwas vom client empfängt diese schleife ausgeführt werden müsste, was nicht der fall ist, sondern eben nur einmal
ich hoffe mir kann jemand helfen
for k := Memo2.Lines.Count - 1 downto 0 do begin if Memo2.Lines[k] = loeschen then begin Memo2.Lines.Delete(k); end; end;
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Poste mal den Code der gesamten Prozedur. Denn, wenn der Code, wie du sagst, in der Prozedur enthalten ist, die jedes mal, wenn der Server etwas empfängt, aufgerufen wird, dann ist das etwas seltsam, dass er nicht ebenfalls ausgeführt wird.
Der Code selbst, den du gepostest hast, funktioniert ja. -
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket); var text,neu :string; i,j,k, l,m:integer; begin text:=Socket.ReceiveText; if text[length(text)]='%' then begin for i := 1 to length(text)-1 do begin neu := neu + text[i]; end; memo2.lines.add(neu); For l := 0 to Server.Socket.ActiveConnections - 1 do begin with Server.Socket.Connections [l] do if (Connected) then SendText(memo2.text+'&'); end; end else if (text[1] = '$') and (text[length(text)]='$') then begin for j := 2 to length(text)-1 do begin loeschen:= loeschen + text[j]; end; for k := Memo2.Lines.Count - 1 downto 0 do begin if Memo2.Lines[k] = loeschen then begin Memo2.Lines.Delete(k); end; end; end else begin memo1.lines.insert(memo1.caretpos.y,text); For m := 0 to Server.Socket.ActiveConnections - 1 do begin with Server.Socket.Connections [m] do if (Connected) then begin SendText(memo1.text); end; end; end; end;
-
Auf den ersten Blick kann ich nichts Außergewöhnliches finden in deinem Code. Was ich vermuten würde, ist einfach mal, dass bei den Bedingungen zwischen Zeile 22 und 41 das so ist, daß diese halt nur einmal erfüllt sind.
Setz' doch einfach mal einen Breakpoint für den Inline-Debugger in Zeile 22, und geh' schrittweise durch den Code, dann siehst du ja, bei welcher If-Bedingung der Block ausgeführt wird, und wann/wo nicht. Denke mal, das ist die einfachste Art, dem Fehler auf die Spur zu kommmen.
Was ich dir anbieten kann:
Wenn du willst, und das Projekt nicht schon 10.000 Zeilen Code hat, kannst du mit das auch per Mail schicken, und ich kuck's mal Schritt für Schritt durch.
Edit: Was mir gerade aufgefallen ist:
du verwendest in Zeile 8 das erste Mal die Variable neu. Wo setzt du die String-Variable auf 'leer', bevor du damit arbeitest? Würde mich nicht darauf verlassen, dass das so ist!
Edit: Mir is' noch was aufgefallen:
In Zeile 4 schaust du, ob das letzte Zeichen des Strings ein %-Zeichen ist. klar.
Wenn das so ist, dann durchläuft dein Programm eine Schleife. Die Anzahl der Schleifendurchläufe ist die Anzahl der Zeichen des Strings minus 1, und genau so oft "addierst" du den GESAMTEN TEXT der Variable text zur Variable neu dazu?
Kann es ein, dass du einfach das %-Zeichen am Ende weghaben willst
Das ginge nämlich einfacher: neu := Copy(text, 1, Length(text)-1);
Wenn ich da was reininterpretier, was du so nicht haben wolltest, Entschuldigung! Und ignorier das einfach. Ich versuch nur dahinterzusteigen, was genau du wirklich vor hast ...
Beitrag geändert: 13.7.2007 15:43:51 von burgi
Beitrag geändert: 13.7.2007 15:49:56 von burgi -
hm, also das ist das erste projekt was ich mit server und client und so mach und deshalb kommt dir bestimmt vieles komisch vor weils anders viel leichter gewesen wäre.
naja an der 'nichtleeren' variable in zeile 8 liegts nicht -
hm, also das ist das erste projekt was ich mit server und client und so mach und deshalb kommt dir bestimmt vieles komisch vor weils anders viel leichter gewesen wäre.
naja an der 'nichtleeren' variable in zeile 8 liegts nicht
Da kann mir schlecht was komisch vorkommen, hab' mich selber noch nie damit beschäftigt ... Wie gesagt: das Angebot steht ... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage