![]() |
Vergleich ???
Hi
Kann mir mal einer veraten wie ich diesen vergleich herstelle steh gerade auf dem schlauch
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var s,za: String; zz,i: Integer; begin Memo1.Lines.Clear; getConnectionList(Memo1.Lines); for i:=0 to Memo1.Lines.Count-1 do begin zz := Pos(' TCP 127.0.0.1:1092 127.0.0.1:18350 HERGESTELLT', Memo1.Lines[i]); if zz > 0 then begin s:= Copy(Memo1.Lines[i],0,66); Memo2.Lines.add(s); Label3.Caption:= s; za:= IntToStr(zz); Exit; end; if s = zz then begin label4.Caption:= 'Hallo'; end; end; end; Danke schonmal Sascha |
Re: Vergleich ???
Hallo,
was möchtest du denn genau erreichen? Du vergleichst nun die Position (Typ: Integer) mit dem Zeileninhalt (Typ: Sting). Das kann natürlich nicht gehen. |
Re: Vergleich ???
Vielleicht liegt es an der Anzahl der Leerzeichen in den Strings!?! Ein Vorschlag wäre es, jeweils alle Leerzeichen vor dem Vergleich zu eliminieren.
SCRaT |
Re: Vergleich ???
Ah daran liegt das
Naja will soll ich das erklären ich bekomme ja über cmd (getConnectionList(Memo1.Lines);) an diser stelle danke an Klaus01 die liste
Delphi-Quellcode:
jetzt wird diese Pos gefunden mit dem String
Aktive Verbindungen
Proto Lokale Adresse Remoteadresse Status TCP 85.180.211.254:1045 207.46.106.26:1863 HERGESTELLT TCP 127.0.0.1:1092 127.0.0.1:18350 HERGESTELLT TCP 127.0.0.1:1354 127.0.0.1:18350 WARTEND TCP 127.0.0.1:1355 127.0.0.1:18350 WARTEND TCP 127.0.0.1:18350 127.0.0.1:1092 HERGESTELLT
Delphi-Quellcode:
Jetzt würde ich gerne diesen String vergleichen sollange der noch da ist passiert nichts aber wenn die verbindung nicht mehr da ist findet er diesen String ja nicht mehr und dann sol was Passieren
TCP 127.0.0.1:1092 127.0.0.1:18350 HERGESTELLT
|
Re: Vergleich ???
Zitat:
Delphi-Quellcode:
Der Code ist übrigens schneller, wenn du nicht ständig auf die VCL (TMemo) zugreifst, sondern intern beispielsweise eine StringList nutzt und diese beim Vergleich und anderen Operationen durch gehst.
IstDa := false; // eine lokale boolsche Variable
for i := 0 to Memo1.Lines.Count - 1 do begin if Memo1.Lines[i] = ' TCP 127.0.0.1:1092 127.0.0.1:18350 HERGESTELLT' then begin // den String gibt's IstDa := true; break; end; end; if not IstDa then begin // den String gibt's nicht end; Wie Michael vorgeschlagen hat, kann es u.U. besser sein, die Leerzeichen zu entfernen. Habe ich dich nun richtig verstanden? *g* |
Re: Vergleich ???
Ja so soll es sein mit den lehrzeichen enfernen weis ich nicht, nicht das ich noch fehler bekomme weil der string zum verglich nicht mehr stimmt
Zitat:
Muss halt mal gucken wie ich das noch mache |
Re: Vergleich ???
Mir kommt grad noch eine Idee, wie es auch gehen könnte:
Delphi-Quellcode:
if Pos(' TCP 127.0.0.1:1092 127.0.0.1:18350 HERGESTELLT', Memo1.Text) > 0 then
// gibt's else // gibt's nicht |
Re: Vergleich ???
Naja werde ich heuteabend mal ausprobieren wenn das so einfach ist freu ich mich schon
muss jetzt auf einen geburtstag die wird 70 freu mich schon Party :party: :party: :kotz: |
Re: Vergleich ???
Ja das klappt wunderbar jetzt muss ich nur noch das ding in eine Stringlist reinsetzen.
Aber eigentlich ist es egal ob der code schnell ist oder nicht Aber danke nochmal |
Re: Vergleich ???
Nur nochmal ne Frage ist das so richtig
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
Var pt: TPoint; Liste: TStringList; begin Liste := TStringList.Create; getConnectionList(Liste); begin if Pos(' TCP 127.0.0.1:1028 127.0.0.1:18350 HERGESTELLT', Liste.Text) > 0 then begin Label3.Caption:='Ja'; end else begin pt:= Point(Width + 300, Top + 100); Mouse.CursorPos := ClientToScreen(pt) end; end; end; |
Re: Vergleich ???
Zitat:
alternativ kannst Du noch die Methode IndexOf der Stringliste verwenden. IndexOf liefert -1 zurück wenn der String in der Stringliste nicht vorhanden ist, ansonsten wird die Zeilennummer zurückgegeben. Was wichtiger ist, Du solltest die Liste am Ende auch der Routine auch wieder freigeben. Grüße Klaus |
Re: Vergleich ???
hi
hab doch nochmal ein Problem damit Ich habe jetzt festgestellt, das der String
Delphi-Quellcode:
nicht immer gleich ist.
if Pos(' TCP 127.0.0.1:1028 127.0.0.1:18350 HERGESTELLT', Liste.Text)
und zwar ändert sich bei jedem erneuten verbinden die letzte zahl um eins von
Delphi-Quellcode:
kann man das jetzt irgendwie so programmieren das man z.b irgendwie ein * als Platzhalter einsetzt
127.0.0.1:18350 1 mal verbinden
127.0.0.1:18351 2 mal verbinden 127.0.0.1:18352 3 mal verbinden 127.0.0.1:18353 4 mal verbinden Gruss und danke schonmal sascha |
Re: Vergleich ???
Hi,
das ginge beispielsweise mit regulären Ausdrücken, doch da muss man sich natürlich ein klein wenig einarbeiten, je nach Komplexität. Es gibt dafür eine Unit. Den Link dazu findest du über die Suche. Du könntest allerdings auch nur die ersten x Zeichen überprüfen ( ![]() |
Re: Vergleich ???
Ja Danke das ist mir auch gerade aufgefallen
das geht mit TCP 127.0.0.1:1028 dem string Danke euch nochmal für die ganze hilfe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 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