AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Alle Wörter aus einem String in eine Listbox
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Wörter aus einem String in eine Listbox

Ein Thema von Pseudemys Nelsoni · begonnen am 5. Mär 2003 · letzter Beitrag vom 9. Mär 2003
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#11
  Alt 5. Mär 2003, 18:58
Zitat:
Was macht deine Variable Zeichen Die ist lokal deklariert und wird nicht benutzt. Doch, sie wird ja doch benutzt, aber Dein Nick nicht
die nick variable sollte den text enthalten, der nachher in die listbox geaddet wird.

ich teste dein code nochmal

danke für die hilfe

gruss mario
Mario
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12
  Alt 5. Mär 2003, 19:04
Dann lass Dir den Nick noch vor dem letzten
Code:
end;
anzeigen Im Moment wirst Du aber da wahrscheinlich gar nicht erst ankommen. Offensichtlich stimmt die Ende-Bedingung meiner Schleifen nicht. Und Tschüß.......
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#13
  Alt 6. Mär 2003, 15:34
ich verstehs einfach nicht, bei:

Delphi-Quellcode:
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: String; var Suppress: Boolean);
var s: string;
begin
  SlAdmin := TStringList.Create;
  s := acontent;
  if acommand = '353then
  begin
    Repeat
      Delete(s, 1, 1);
    Until s[1] = ':';
    Delete(s, 1, 1);
    Repeat
      while s[1] <> ' do
        Delete(s, 1, 1);
      Delete(s, 1, 1);
      if s[1] = '!then
      begin
        SlAdmin.AddObject(Copy(s, 1, Pos(' ', s)), image13.Picture.Bitmap);
        Delete(s, 1, 1);
      end;
    until s = '';
  end;
end;
kommt immer n fehler "zugriffsverletzung auf 3523423" oder so

ist doch alles soweit richtig oder?

gruss mario
Mario
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14
  Alt 6. Mär 2003, 19:06
Dein Quelltext ist mir zu kompliziert. Damit käme ich nicht weiter. So geht das jetzt, sogar getestet. Mensch, habe mich bestimmt 5mal vertippt bei dem ersten Beispiel, sagt zumindets Delphi.

Code:
procedure TForm1.Button1Click(Sender: TObject);
VAR st : string;
begin
  st := 'ufc_user = #tiberiansun :ufc_user @nick1 @nick2 @nick3 @nick4';
  repeat
    delete (st,1,1)
  until st[1] = ':';  // jetzt nur noch Nicknamen
  delete (st,1,1);     // auch : löschen
  repeat
    ListBox1.Items.Add (copy (st,1,pos (' ',st)-1)); // Nick in Box
    WHILE (st [1] <> ' ') DO
      delete (st,1,1);
    delete (st,1,1);
showmessage (st);
  until st ='';
end;
Lass sowas mal laufen, dann wirst Du merken, daß am Schluß was nicht stimmt. Bei st muß noch ein Zeichen manipuliert werden. Welches Auf diese Spur bringt Dich der Compiler.

P.S.: ich meine das st am Anfang, nicht, daß Du an den anderen was rumfummelst
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#15
  Alt 7. Mär 2003, 00:07
funzt, danke schön

gruss mario
Mario
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#16
  Alt 7. Mär 2003, 00:35
Zitat von silent:
funzt, danke schön
Und wieso, bitte sehr ? Erkläre bitte den Haken an der Geschichte! Wo war der Fehler ? Das Thema hat jetzt fast 130 Aufrufe gehabt, oder warst Du das alleine ? Poste am besten mal den ganzen Code. Die Antworten kamen fast alleine von mir.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#17
  Alt 7. Mär 2003, 01:23
hatte den code extra nicht gepostet, da er unordentlich aussieht und sicher auch zu lang (kürzer krieg ichs halt nicht hin.

Delphi-Quellcode:
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: String; var Suppress: Boolean);
var s, s2: string;
begin
  SlAdmin := TStringList.Create;
  SlOp := TStringList.Create;
  SlHop := TStringList.Create;
  SlVoice := TStringList.Create;
  SlReg := TStringList.Create;
  SlAdmin.Sorted := true;
  SlOp.Sorted := true;
  SlHop.Sorted := true;
  SlVoice.Sorted := true;
  SlReg.Sorted := true;
  s := acontent;
  if acommand = '353then
  begin
    Repeat
      Delete(s, 1, 1);
    Until s[1] = ':';
    Delete(s, 1, 1);
    Repeat
      if s[1] = '!then
      begin
        Delete(s, 1, 1);
        SlAdmin.AddObject(Copy(s, 1, Pos(' ', s)), image13.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
      if s[1] = '@then
      begin
        Delete(s, 1, 1);
        SlOp.AddObject(Copy(s, 1, Pos(' ', s)), image12.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
      if s[1] = '%then
      begin
        Delete(s, 1, 1);
        SlHop.AddObject(Copy(s, 1, Pos(' ', s)), image14.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
        if s[1] = '+then
      begin
        Delete(s, 1, 1);
        SlVoice.AddObject(Copy(s, 1, Pos(' ', s)), image15.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
        if (s[1] <> '!') OR (s[1] <> '@') OR (s[1] <> '%') OR (s[1] <> '+') then
        begin
          SlReg.AddObject(Copy(s, 1, Pos(' ', s)), image16.Picture.Bitmap);
          i := i + 1;
          label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
        end;
      while s[1] <> ' do
        Delete(s, 1, 1);
      Delete(s, 1, 1);
    until s = '';
    listbox1.Items.AddStrings(SlAdmin);
    listbox1.Items.AddStrings(SlOp);
    listbox1.Items.AddStrings(SlHop);
    listbox1.Items.AddStrings(SlVoice);
    listbox1.Items.AddStrings(SlReg);
  end;
end;
dein code ist da mit drin(sonst würds wohl noch nicht funzen *g*)
musste ihn nur bisschen verlängern für das ganze Op admin hop voice zeug :\

...jo ich weiss "wozu die stringslists", da ich die nicks nach bildern ordne und nicht nach alphabet ging das leider nicht anders(oder doch?)

nochmals danke ^^

gruss mario
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#18
  Alt 7. Mär 2003, 17:20
ich glaub ich schaffe das nie sonen dummen chat (und denn noch mit den indy komponenten) fertig zu bekommen

Delphi-Quellcode:
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: String; var Suppress: Boolean);
var s, nick: string;
    i: integer;
begin
   SlAdmin := TStringList.Create;
  SlOp := TStringList.Create;
  SlHop := TStringList.Create;
  SlVoice := TStringList.Create;
  SlReg := TStringList.Create;
  SlAdmin.Sorted := true;
  SlOp.Sorted := true;
  SlHop.Sorted := true;
  SlVoice.Sorted := true;
  SlReg.Sorted := true;
  s := acontent;
  if acommand = '353then
  begin
    Repeat
      Delete(s, 1, 1);
    Until s[1] = ':';
    Delete(s, 1, 1);
    Repeat
      if s[1] = '!then
      begin
        Delete(s, 1, 1);
        SlAdmin.AddObject(Copy(s, 1, Pos(' ', s)), image13.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
      if s[1] = '@then
      begin
        Delete(s, 1, 1);
        SlOp.AddObject(Copy(s, 1, Pos(' ', s)), image12.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
      if s[1] = '%then
      begin
        Delete(s, 1, 1);
        SlHop.AddObject(Copy(s, 1, Pos(' ', s)), image14.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
        if s[1] = '+then
      begin
        Delete(s, 1, 1);
        SlVoice.AddObject(Copy(s, 1, Pos(' ', s)), image15.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
        if (s[1] <> '!') OR (s[1] <> '@') OR (s[1] <> '%') OR (s[1] <> '+') then
        begin
          SlReg.AddObject(Copy(s, 1, Pos(' ', s)), image16.Picture.Bitmap);
          i := i + 1;
          label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
        end;
      while s[1] <> ' do
        Delete(s, 1, 1);
      Delete(s, 1, 1);
    until s = '';
    listbox1.Items.AddStrings(SlAdmin);
    listbox1.Items.AddStrings(SlOp);
    listbox1.Items.AddStrings(SlHop);
    listbox1.Items.AddStrings(SlVoice);
    listbox1.Items.AddStrings(SlReg);
  end; // BIS HIER HIN AUF DAS "ONNAMES" EREIGNIS
  if Copy(s, 14, 2) = '+athen
  begin
    nick := s;
    delete(nick, 1, 16);
    SlAdmin.AddObject(nick, image13.Picture.Bitmap);
    for i := 0 to SlOP.IndexOf(nick) do
    begin
      if SlOp.IndexOf(nick) > 0 then
      SlOP.Delete(i);
    end;
    for i := 0 to SlHop.IndexOf(nick) do
    begin
      if SlOp.IndexOf(nick) > 0 then
      SlHop.Delete(i);
    end;
    for i := 0 to SlVoice.IndexOf(nick) do
    begin
      if SlOp.IndexOf(nick) > 0 then
      SlVoice.Delete(i);
    end;
    for i := 0 to SlOP.IndexOf(nick) do
    begin
      if SlReg.IndexOf(nick) > 0 then
      SlReg.Delete(i);
    end;
    listbox1.Clear;
    listbox1.Items.AddStrings(SlAdmin);
    listbox1.Items.AddStrings(SlOp);
    listbox1.Items.AddStrings(SlHop);
    listbox1.Items.AddStrings(SlVoice);
    listbox1.Items.AddStrings(SlReg);
    end; // BIS HIER HIN AUF DAS "+a" EREIGNIS
  end;
end;
^^^^^^^^^^^^^^ das ist allein um bei "OnNames" die Nicks aus dem String "= #chan :nick nick2 nick3"(usw) auszulesen und sie in die Stringlists Sladmin, Slop usw einzufügen und von da aus in die Listbox.
ich meine das muss doch auch kürzer gehn für sone kleinigkeit..

gibts nicht irgendwie ne andere lösung? weil dadurch das es soviel ist (da unter soll noch code folgen) komm ich mit dem ganzen nichtmehr klar.
der code der auf das +a reagieren soll funzt z.b nicht richtig.

für jede hilfe dankbar

gruss mario
Mario
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#19
  Alt 7. Mär 2003, 17:52
Das ist viel zu viel, für einen Fehler zu finden. Du mußt das Problem reduzieren und eingrenzen. Ich hab Dir doch gesagt, daß mein Beispeil geht, allerdings nur, sofern mit dem st noch etwas passiert

Code:
 
st := 'ufc_user = #tiberiansun :ufc_user @nick1 @nick2 @nick3 @nick4';
@nick4 ist etwas anders als die anderen drei ! Auch nützt es nix, wenn Du schreist: "Mama, mein Programm geht nicht!" Wo geht was micht ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#20
  Alt 7. Mär 2003, 19:04
Also ich hatte mir das so vorgestellt, das ich bei dem Ereignis "OnRAW"(353(/names)), aus dem String "silent = #tiberiansun :!silent @Benny @Stoja @oXyGeN %sysop %stalin +NewbiLike" die nicks auslese, also alles nach dem ":". Die Nicks mit dem "!" vor dem Nick kommen in die Stringlist "SlAdmin", die mit "@" in die "SlOP"...das gleiche mit hop voice und regulären nicks. Danach kommen die Stringlists in die Listbox, erst admins dann ops dann hops dann voice dann reg.
btw: das erste zeichen jedes nicks muss weg, also der prefix, da ich ein bild stattdessen nehme


^^^^ das ist allein fürs chan joinen (also onnames)


Sagen wir mal jemand setzt den mode "+a", dann muss ich in dem String "#tiberiansun +a silent" gucken obs auch "+a" ist (kann ja auch +o -a etc sein), und schlisslich muss ich das letzte Wort(den nick) rausnehmen, ihn in die Stringlist "SlAdmin" packen und die anderen Stringlists "SlOP, SlHop, SlVoice, SlReg" überprüfen in welcher Stringlist der nick vor dem +a war und ihn daraus löschen. Wenn ich das hab Lösch ich die Listbox1 und füge wieder alle Stringlists in die Listbox1.

ist bisschen viel oder?

gruss mario
Mario
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.
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