Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Substring Problem (https://www.delphipraxis.net/138967-substring-problem.html)

PhilmacFLy 20. Aug 2009 22:18

Re: Substring Problem
 
Selbst wenn es mehere Nicks sind ist es immer Nur diese Zeile:
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~PhilmacFLy

Nein es sind nicht immer nur 2 Nicks das können so viele sein wie sie wollen, soviel Leute wie halt im IRC channel sind.

Luckie 20. Aug 2009 23:59

Re: Substring Problem
 
Warum suchst du nicht nach der Tilde? Danach steht doch der Nick.

NickelM 21. Aug 2009 00:36

Re: Substring Problem
 
hmm ich verstehe es so das es z.b. bei 2 Leuten so aussieht
Delphi-Quellcode:
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~PhilmacFLy
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~Test2 
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~TheBest
366 Testnick #Königlich-Preußisches-Inf.Reg :End of /NAMES list
So oder wie sieht das dan aus????

angos 21. Aug 2009 07:45

Re: Substring Problem
 
Zitat:

Zitat von NickelM
hmm ich verstehe es so das es z.b. bei 2 Leuten so aussieht
Delphi-Quellcode:
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~PhilmacFLy
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~Test2 
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~TheBest
366 Testnick #Königlich-Preußisches-Inf.Reg :End of /NAMES list
So oder wie sieht das dan aus????

Nein, er hat ja in seinem Beispiel schon zwei Nicks:

353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~PhilmacFLy

Nick 1 = Testnick
Nick 2 = ~PhilmacFly


Eigentlich muss er also nur hingehen und die Zeile mit dem 353 auswerten. Alle Nicknames stehen nach dem Doppelpunkt, und sind jeweilis durch ein Leerzeichen getrennt. Pos dürfte hier gute Dienste erweisen.
Zumindest würde ich das so interpretieren! Es kann natürlich sein, dass die Nicks noch auf mehrere Zeile aufgeteilt werden, ich kenne das IRC Protokoll leider nicht.

PhilmacFLy 21. Aug 2009 11:50

Re: Substring Problem
 
wie angos schon sagte das sind schon zwei nicks, weil Testnick auch ein nick ist. Desweiteren steht die tilde nur für ein Recht des Jeweiligen, in diesem fall Owner.
Desweiteren stehen die Nicks immer nur in einer Zeile, egal wie viele das sind.

Mine Prolbme ist nur, wie du gesehen hast, angos, das ich das schon probiert hab aber nicht hinbekommen hab.

himitsu 21. Aug 2009 12:00

Re: Substring Problem
 
also falls ich das jetzt nicht falsch verstanden hab ...

- erste Zeile auslesen
- nach einem Trenner suchen (der : sieht doch gut aus?)
- alles vor dem Trenner entfernen
- und nun enfach nur noch anhand der Leerzeichen die Nicks auftreilen

PhilmacFLy 21. Aug 2009 12:27

Re: Substring Problem
 
der erste punkt war ja das, was ich mit meinem code versucht hatte.

angos 21. Aug 2009 12:35

Re: Substring Problem
 
Hi,

nicht getestet, sollte aber mit den entsprechenden Deklarationen funktionieren.


Delphi-Quellcode:
for i := 0 to Memo2.Lines.Count do
begin
  if Copy(Memo2.Lines[i], 1, 3) = '353' then
  begin
    sHelp := Copy(Memo2.Lines[i], Pos(':', Memo2.Lines[i]), Length(Memo2.Lines[i]);
   
   
    while pos(' ', sHelp) > 0 do
    begin
      Memo3.Lines.Add(Copy(sHelp, 1, Pos(' ', sHelp));
      sHelp := Trim(Copy(sHelp, Pos(' ', sHelp)+1, Length(sHelp)));
    end;

    break;

  end;
end;
Gruß
angos

PhilmacFLy 21. Aug 2009 13:01

Re: Substring Problem
 
funktioniert nicht wenn ich das einbau bekomm ich nur =

xZise 21. Aug 2009 13:46

Re: Substring Problem
 
Okay, ich versuch mich auch mal :D

Also das steht in s:
Zitat:

Zitat von PhilmacFLy
Delphi-Quellcode:
353 Testnick = #Königlich-Preußisches-Inf.Reg :Testnick ~PhilmacFLy
366 Testnick #Königlich-Preußisches-Inf.Reg :End of /NAMES list.

Jetzt ist meine Frage: Ist der Doppelpunkt vor "Testnick" ein Moderatorlevel? Also so wie die Tilde?
Weil dann könntest du nach den Channelnamen (ist das "#Königlich-Preußisches-Inf.Reg"?) bzw der Raute suchen.

Und dann (da imho Channelnamen keine Leerzeichen enthalten) alles bis zum Leerzeichen nach der Raute löschen. Und dann den String aufteilen, solange bis nix mehr da ist oder ein zeilenumbruch kommt (ist das eigentlich ein #13#10 oder #13 oder #10?). Ich werde später ein Beispielcode posten...

So mit folgenden Code bestimmst du die Nicks (Ergebnis müsste ":Testnick ~PhilmacFLy" sein):
Delphi-Quellcode:
ChannelOffset := Pos('#', s);
NickOffset := PosEx(' ', s, ChannelOffset) + 1;
LineEnd := // edit: siehe Posting #22
Nicks := Copy(s, NickOffset, LineEnd - NickOffset
Als nächstes müsstest du diesen String dann nur noch Anhand der Leerzeichen aufteilen.
Also angos hatte da schon eine Implementation.

MfG
xZise


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr.
Seite 2 von 4     12 34      

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