kostenloser Webspace werbefrei: lima-city


Lines aus Memo löschen

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    nordy

    nordy hat kostenlosen Webspace.

    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;
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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.
  4. Autor dieses Themas

    nordy

    nordy hat kostenlosen Webspace.

    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;
  5. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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:confused:
    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
  6. Autor dieses Themas

    nordy

    nordy hat kostenlosen Webspace.

    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
  7. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.


    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 ...
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!