Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String erkennen und aufteilen! (https://www.delphipraxis.net/68517-string-erkennen-und-aufteilen.html)

la.reunion 30. Apr 2006 22:06


String erkennen und aufteilen!
 
Hallo,
Ich habe ien kleine aber wichtiges Problem.
Ich möchte eine Abfrage machen in der folgendes abgefragt wird:

Wenn der string mit \\ anfängt soll er in memo2 geschirben werden, ansonsten in memo1.

Wie kann cih das anstellen?

Danke für eure Hilfe

PS:. Wie kann cih den String unterteilen sprich wenn der string \\192.168.0.0 heisst ihn in 4 variablen auteilen
also die erste 192....... usw.

Lg La.Reunion

Matze 30. Apr 2006 22:11

Re: String erkennen und aufteilen!
 
Hi,

zu 1:

Delphi-Quellcode:
if Pos('\\', StringVar) = 1 then
  // "\\" steht am Anfang
zu 2: explodeexplode

la.reunion 30. Apr 2006 22:14

Re: String erkennen und aufteilen!
 
DANKE für die schnelle Antowot!
...was ist mit stringvar gemeint? bzwwas muss ich damit machen?


Lg La.Reunion

EDatabaseError 30. Apr 2006 22:18

Re: String erkennen und aufteilen!
 
Zitat:

Zitat von la.reunion

PS:. Wie kann cih den String unterteilen sprich wenn der string \\192.168.0.0 heisst ihn in 4 variablen auteilen
also die erste 192....... usw.

Lg La.Reunion

explodeexplode

himitsu 30. Apr 2006 22:27

Re: String erkennen und aufteilen!
 
Zitat:

Zitat von la.reunion
...was ist mit stringvar gemeint? bzwwas muss ich damit machen?

für StringVar mußt du einfach nur deine StringVariable einsetzen.

Also
Delphi-Quellcode:
Var S: String;

S := '\\192.168.0.0';
Delphi-Quellcode:
If Pos('\\', S) = 1 Then
  Memo1.Lines.Add(S)
Else
  Memo2.Lines.Add(S);

la.reunion 30. Apr 2006 22:28

Re: String erkennen und aufteilen!
 
mhh das habe ich gemacht mein string ist leider nur danach leer :-(
bzw in memo2 wird immer nur eine leere zeile hinzugefügt


Ist für einen chat das die IP mitgesendet wird

Server:
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  I: integer;
begin
Text:= Socket.ReceiveText;
if Pos('\\',Text) = 1 then
Memo2.Lines.add(Socket.ReceiveText) else
Memo1.Lines.Add(Timetostr(now)+': '+Text);
For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
with ServerSocket1.Socket.Connections [I] do
if (connected) then SendText(Text);
  end;
end;
Client:
Delphi-Quellcode:
Var
IP : string;
begin
Label3.Caption := IP;
if (ClientSocket1.Active=true) then
ClientSocket1.socket.SendText('\\'+IP);
end;

la.reunion 30. Apr 2006 22:34

Re: String erkennen und aufteilen!
 
AH habs
bei dme code war ein fehler!!!

Bei

if Pos('\\',Text) = 1 then
Memo2.Lines.add(Socket.ReceiveText) else
...muss einfach nur TEXT sein!


Danke für eure antworten!
Lg La.Reunion

PS:. wie kann cih amchen das die zeile beim ausloggen wieder gelöscht wird?

himitsu 30. Apr 2006 22:43

Re: String erkennen und aufteilen!
 
Erstens: dein QuellCode ist echt besh*** formatiert ... kaum zu entziffern.

Zweitens: das "=true" gewöhn dir ganz schnell ab, es kann und wird abundzu zu Problemen führen
denn TRUE ist nicht gleich TRUE

Teste es selber mal
Delphi-Quellcode:
Var B: Boolean;

Begin
  B := True;

  If B = False Then ... // wird nicht ausgelöst
  If B = True Then ... // wird ausgelöst (OK, hier funktioniert es mal)

  If not B Then ...    // wird nicht ausgelöst
  If B Then ...        // wird ausgelöst



  B := Boolean(2); // ist im Grunde auch True, da TRUE <> 0

  If B = False Then ... // wird nicht ausgelöst
  If B = True Then ... // wird auch nicht ausgelöst !!!

  If not B Then ...    // wird nicht ausgelöst
  If B Then ...        // wird ausgelöst



  B := Boolean(0); // oder B := False;

  If B = False Then ... // wird ausgelöst
  If B = True Then ... // wird nicht ausgelöst

  If not B Then ...    // wird ausgelöst
  If B Then ...        // wird nicht ausgelöst
End;
Server:
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  Text: String;
  i: integer;

begin
  Text := Socket.ReceiveText;
  if Pos('\\', Text) = 1 then
    Memo2.Lines.Add(Text)
  else
    Memo1.Lines.Add(TimeToStr(now) + ': ' + Text);
  For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
    with ServerSocket1.Socket.Connections[i] do
      if connected then SendText(Text);
end;
Client:
Delphi-Quellcode:
Var
  IP: string;

begin
  Label3.Caption := IP;
  if ClientSocket1.Active then
    ClientSocket1.socket.SendText('\\' + IP);
end;
[add]
wo war der Rote Kaste ... Daaaannniiiieeellll?

la.reunion 30. Apr 2006 22:44

Re: String erkennen und aufteilen!
 
Okay mach ich danke!

la.reunion 30. Apr 2006 22:56

Re: String erkennen und aufteilen!
 
Irgendwie hab cih gradn hänger was is heiran falsch?
Es wird nur ncihtsmehr zum memo1 geadded.

Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
    Textrec : string;
begin
    Textrec:= Socket.ReceiveText;
    Form1.Show;
if not pos('192', Textrec) = 1 then
    Memo1.Lines.Add(Textrec);
end;
Woran liegt das?

Lg La.Reunion

Matze 30. Apr 2006 23:08

Re: String erkennen und aufteilen!
 
Es wird nun was hinzugefügt, sofern "192" nicht am Anfang von "Socket.ReceiveText; " steht. Was steht denn in "Socket.ReceiveText; "?

la.reunion 30. Apr 2006 23:13

Re: String erkennen und aufteilen!
 
entweder eine nachricht(handelt sich ja um einen chat) oder halt die IP.

Wenn es die Ip ist soll es ja logischerweise nicht in memo1 angezeigt werden da ich diese nur zum server schicken will(um zu sehen wer eingeloggt ist).

....

Matze 30. Apr 2006 23:16

Re: String erkennen und aufteilen!
 
Versuche es mal so:

Delphi-Quellcode:
if not (Pos('192', Textrec) = 1) then
  Memo1.Lines.Add(Textrec);
oder so:

Delphi-Quellcode:
if Pos('192', Textrec) <> 1 then
   Memo1.Lines.Add(Textrec);
Oder du schreibst die eine Funktion, die überprüft, ob der Text eine gültige IP ist und handelst entsprechend. Doch irgendwie stimmt dein Konzept imho nicht, denn normalerweise wird eine IP nicht über die Nachricht übermittelt sondern separat im Hintergrund, das erspart dir so schlampige Lösungen.

Denn wenn dir einer die Nachricht "1920 ist mein Großvater geboren" schickt, kommt das auch nie an, da das mit 192 beginnt.

la.reunion 30. Apr 2006 23:20

Re: String erkennen und aufteilen!
 
ja hast recht aber so gut kenne ich mich leider nciht aus um zu prüfen ob das eine gültige IP ist vlt kannst du mir dabei ja helfen bz erklären wie ich das angehen soll!


Zitat:

"1920 ist mein Großvater geboren" schickt, kommt das auch nie an, da das mit 192 beginnt.
am Anfang hatte ich "\\192.168.0.0" als Abfrage statt 192-

Danke für die Hilfe
Lg La.reunion

Matze 30. Apr 2006 23:22

Re: String erkennen und aufteilen!
 
Auf Anhieb habe ich diese Funktion gefunden. Ich weiß nicht, ob solch eine lange Funktion nötig ist, aber sie scheint zu funktionieren.

Nun gahe ich aber ins Bett, muss morgen früh raus, bye. ;)


Edit: http://www.swissdelphicenter.ch/de/showcode.php?id=2020

la.reunion 30. Apr 2006 23:25

Re: String erkennen und aufteilen!
 
DANKE schlaf gut!


...ich ahb morgen keine Schule juhu :-D *freu*

Lg La.Reunion

Matze 30. Apr 2006 23:27

Re: String erkennen und aufteilen!
 
Ich hoffe, du hast mein "Edit" gesehen, diese Funktion ist besser, als die lange aus dem Thread, denke ich.

OT:

Zitat:

Zitat von la.reunion
...ich ahb morgen keine Schule juhu :-D *freu*

Äh, ich meinte heute, ist ja schon nach 24 Uhr (in BaWü Feiertag, kA, ob deutschlandweit). So'n Feiertag nach'm Geburtstag ist ne saugeile Sache. *gg*

la.reunion 30. Apr 2006 23:29

Re: String erkennen und aufteilen!
 
..Alles gute noch auch wenn cih jetzt schon zuspät bin :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 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-2025 by Thomas Breitkreuz