![]() |
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; |
Re: Ignorieren Liste
Ist eigentlich egal wo, weil....
Delphi-Quellcode:
^^^^^^Das da schlicht Unsinn ist.
if clientsocket.remotehost = form10.listbox1.items.text then
end // es soll nix passieren die ankommende Nachricht soll nicht angezeigt werden 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 ![]() MfG :) Und Btw: Man sollt hier nicht den "Wenn auf Ignore, dann..." Fall prüfen, sondern den "Wenn NICHT auf ignore, dann" ;) |
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.
|
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? |
Re: Ignorieren Liste
Lies nochmal mein Beitrag Knotti, ab "btw", hab editiert
|
Re: Ignorieren Liste
Ich hab es jetzt mit
Delphi-Quellcode:
und dazu beim senden noch
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
Delphi-Quellcode:
Das so geändert nun kann ich eine nachricht schreiben wnen ich eine weitere schreibe stürzt das ganz Programmm ab...
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; Wiemache ich eine Schleife in anderer "Richtung" (if not?) |
Re: Ignorieren Liste
Statt:
Delphi-Quellcode:
Solltest Du:
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
Delphi-Quellcode:
schreiben, da ich nicht weiss wie es weitergeht, kann ich Dir auch nicht mehr schreiben.
procedure TForm1.TcpServer1Accept(sender: TObject;
ClientSocket: TCustomIpClient); var s: string; nick: string; DataThread: TClientDataThread; begin if clientsocket.remotehost <> form10.listbox1.items.text then begin |
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 =) |
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:
Das ist der Code für jeden einzelnen Eintrag oder`?
If form10.listbox1.Items.IndexOf (ClientSocket.Remotehost) = -1 Then
|
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 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 10:21 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 by Thomas Breitkreuz