Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ignorieren Liste (https://www.delphipraxis.net/62315-ignorieren-liste.html)

Knotti2005 2. Feb 2006 19:42


Ignorieren Liste
 
Hallo Leute ich wollte einen Vergleich des Stringes ClientSocket.RemotHost und meiner Listbox1 (Ignorierenliste) also dachte ich mir



Delphi-Quellcode:
if clientsocket.remotehost = form10.listbox1.items.text then
end // es soll nix passieren die ankommende Nachricht soll nicht angezeigt werden

Nun zum Problem wo muss ich den Code bei mir einbauen ich hatte ihn in der Empfangsprozedur schon an unterschiedlichen Stellen ohne Erfolg... ?!

Delphi-Quellcode:
procedure TForm1.TcpServer1Accept(sender: TObject;
  ClientSocket: TCustomIpClient);
var
  s: string;
  nick: string;
  DataThread: TClientDataThread;
  begin
  // create thread
  DataThread:= TClientDataThread.Create(true);
  // set the TagetList to the gui list that you
  // with to synch with.
  DataThread.TargetList := memRecv.lines;
  // Load the Threads ListBuffer
  nick := ClientSocket.Receiveln;
  s := ClientSocket.Receiveln;
  while s <> '' do
  begin
    DataThread.ListBuffer.Add( nick + '-' + TimeToStr(Time) +'@' + ClientSocket.RemoteHost);
    DataThread.ListBuffer.Add(s);
    s := ClientSocket.Receiveln;
    DataThread.ListBuffer.Add(' ');
    JvTrayIcon1.BalloonHint('Neue Nachricht','Neue Nachricht von ' + nick + ' erhalten.');
  end;
  // Call Resume which will execute and synch the
  // ListBuffer with the TargetList
  DataThread.Resume;
  memrecv.perform( EM_SCROLLCARET, 0, 0 );
If edtRemoteHost.Items.IndexOf (ClientSocket.Remotehost) = -1 Then
begin
  if (Application.MessageBox(
            'Wollen Sie die Absender-IP zu ihrer Empfängerliste hinzufügen?',
            'Neuer Absender',
            MB_YESNO + MB_ICONQUESTION) = ID_YES) then
         begin
            edtremotehost.Items.Add(ClientSocket.Remotehost);
         end
      else
    end
  else
end;

Pseudemys Nelsoni 2. Feb 2006 19:45

Re: Ignorieren Liste
 
Ist eigentlich egal wo, weil....

Delphi-Quellcode:
if clientsocket.remotehost = form10.listbox1.items.text then
end // es soll nix passieren die ankommende Nachricht soll nicht angezeigt werden
^^^^^^Das da schlicht Unsinn ist.

Egal ob der Vergleich True oder False ergibt, ausgeführt wird nichts bzw würde der Code dahinter unabhängig vom Ergebnis weitehrin ausgeführt werden, d.h kannst du das auch weglassen ;)

Schau mal nach Hier im Forum suchenExit .

MfG :)

Und Btw: Man sollt hier nicht den "Wenn auf Ignore, dann..." Fall prüfen, sondern den "Wenn NICHT auf ignore, dann" ;)

jim_raynor 2. Feb 2006 19:47

Re: Ignorieren Liste
 
So in der Form kann man es garnicht kompilieren. Richtig wäre statt dem end ein exit zu nehmen, wodurch die Prozedur beendet wird. Allerdings sollte man dann aufpassen, dass jeder angeforderte Speicher auch vorher freigegeben wird.

Knotti2005 2. Feb 2006 19:49

Re: Ignorieren Liste
 
Wie meinst du das er soll ja mit der Prozedur nicht fortfahren...
Ich hatte sonst auch immer end genommen?

EDIT: Wo war der rote Kasten?

Pseudemys Nelsoni 2. Feb 2006 19:51

Re: Ignorieren Liste
 
Lies nochmal mein Beitrag Knotti, ab "btw", hab editiert

Knotti2005 2. Feb 2006 20:07

Re: Ignorieren Liste
 
Ich hab es jetzt mit

Delphi-Quellcode:
procedure TForm1.TcpServer1Accept(sender: TObject;
  ClientSocket: TCustomIpClient);
var
  s: string;
  nick: string;
  DataThread: TClientDataThread;
  begin
  if clientsocket.remotehost = form10.listbox1.items.text then
  begin
  exit
  end
  else
  begin
und dazu beim senden noch

Delphi-Quellcode:
procedure TForm1.SendenClick(Sender: TObject);
begin
  TcpClient1.RemoteHost := edtRemoteHost.Text;
  TcpClient1.RemotePort := edtRemotePort.Text;
    if TcpClient1.Connect then
    begin
      TcpClient1.Sendln(edtnickname.Text);
      TcpClient1.Sendln(memSend.text);
    TcpClient1.Disconnect;
    memsend.lines.Clear;
    end
    else
    begin
    TcpClient1.Disconnect;
    memrecv.Lines.Add('FEHLER! - Der Empfänger ist offline!');
    memsend.lines.Clear;
    end
  end;
Das so geändert nun kann ich eine nachricht schreiben wnen ich eine weitere schreibe stürzt das ganz Programmm ab...

Wiemache ich eine Schleife in anderer "Richtung" (if not?)

Pseudemys Nelsoni 2. Feb 2006 20:14

Re: Ignorieren Liste
 
Statt:

Delphi-Quellcode:
procedure TForm1.TcpServer1Accept(sender: TObject;
  ClientSocket: TCustomIpClient);
var
  s: string;
  nick: string;
  DataThread: TClientDataThread;
  begin
  if clientsocket.remotehost = form10.listbox1.items.text then
  begin
  exit
  end
  else
  begin
Solltest Du:

Delphi-Quellcode:
procedure TForm1.TcpServer1Accept(sender: TObject;
  ClientSocket: TCustomIpClient);
var
  s: string;
  nick: string;
  DataThread: TClientDataThread;
begin
  if clientsocket.remotehost <> form10.listbox1.items.text then
  begin
schreiben, da ich nicht weiss wie es weitergeht, kann ich Dir auch nicht mehr schreiben.

Pseudemys Nelsoni 2. Feb 2006 20:15

Re: Ignorieren Liste
 
Wie meinste das mit "Andere Richtung"? Ich seh nichtmal eine Schleife in irgendeiner Richtung bei Dir.

For ... downto ... do << eine rückwärtslaufende For-Schleife.


Edit: Übrigens weiss ich nciht wieso Du auf "form10.listbox1.items.text" prüfst. Damit prüfst Du nicht jedes einzelne Item der ListBox.

Nur zur Info =)

Knotti2005 2. Feb 2006 20:35

Re: Ignorieren Liste
 
Ich meine ja nicht eine Schleife sondern eine Überprüfung if.. Wenn-Dann
if ... then ...

Oben meinte er doch bei bwt was dann müsste ja

Wenn .. nicht dann ... - if not ... then ... der code dafür sein oder


Delphi-Quellcode:
If form10.listbox1.Items.IndexOf (ClientSocket.Remotehost) = -1 Then
Das ist der Code für jeden einzelnen Eintrag oder`?

gfjs 3. Feb 2006 03:26

Re: Ignorieren Liste
 
Hallo, Knotti2005.

Trotz meines fortgeschrrittenen Alters bin ich noch (Programmier)Anfänger und kann Dir bei Deiner Frage leider nicht weiterhelfen. Aber trotzdem hätte ich einen Tipp für Dich:

Zitat:

Nun zum Problem wo muss ich den Code bei mir einbauen ich hatte ihn in der Empfangsprozedur schon an unterschiedlichen Stellen ohne Erfolg... ?!
Mein Vorschlag dazu: :wink:

Nun zum Problem: Wo muss ich den Code bei mir einbauen? Ich hatte ihn in der Empangsprozedur schon an unterschiedliche Stellen - ohne Erfolg!

Ich habe den Eindruck, dass es manchmal schwerer ist, die Frage zu lesen, als eine Antwort zu geben. (Trifft auf mich in diesem Fall natürlich nicht zu).

mfg gfjs

PS: Das ist nicht böse gemeint, aber ich gehöre noch zu der "altmodischen" Generationn und finde es schade, wenn mit unserer Sprache allzu nachlässig umgegangen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.
Seite 1 von 2  1 2      

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