Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann ich nach einem String den nächsten 'sehen' (https://www.delphipraxis.net/6651-wie-kann-ich-nach-einem-string-den-naechsten-sehen.html)

Nicodius 17. Jul 2003 16:30


Wie kann ich nach einem String den nächsten 'sehen'
 
Frage wie kan ich nach einem Strin den nächsten erblicken

zb.: /kick *name* beim Chat (der nächste String sollte gekickt werden(ausgeschlossen werden aus dem Chat)

Bitte helft mir

Danke im Voraus(ihr wisst eh immer Rat :D )

Christian Seehase 17. Jul 2003 16:34

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Moin Nicodius,

schau Dir dazu mal die Funktionen pos und copy an.

Nicodius 17. Jul 2003 16:39

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
HAb ich schon aber weiß eben nicht wie ich daraus den NÄCHSTEN String bekomme!

Christian Seehase 17. Jul 2003 16:43

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Moin Nicodius,

Du weisst dass der erste String /kick ist, und Du weisst wie lang dieser String ist.
Dann suchst Du halt nach /kick und kopierst ab dieser Position plus Länge plus 1 bis zum Ende des Strings. Dass müsste dann der Name sein (ggf. mit Trim Blanks löschen)

Alexander 17. Jul 2003 17:08

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Du kannst ja mit POS nach dem ersten Leerzeichen suchen und dann ab da alles rauskopieren.

Basic-Master 17. Jul 2003 17:42

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Hi,
das geht wenn du mit copy+pos arbeitest:
Delphi-Quellcode:
var a,b,c:integer;
   s, temp, suche:string;
begin
a := 0;
s := 'das hier ist ein toller test. hier isser.';
temp := s;
suche := 'hier';
for a := 1 to length(s) do begin
  c := pos(suche, temp);
  if c <> 0 then begin
  b := length(s) - length(temp);
  showmessage('An Position "' + inttostr(c + b) + '" ist ein "' + suche + '".');
  temp := copy(temp, c + length(suche), length(temp));
  end;
end;

Nicodius 18. Jul 2003 07:02

Wie kann ich nach einem String den nächsten 'sehen'
 
Danke, hilft sehr viel. Versteh zwar nicht alles aber sollange es geht ists doch super :mrgreen:

Alexander 18. Jul 2003 08:14

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
das istz aber eigentlich die falsche Einstellung....du sollst doch auch was draus lernen, sonst fragst du evtl beim nächsten mal die gleiche oder eine sehr ähnliche Frage, bei der du nicht mehr weiterweißt...
Was verstehst du denn nicht?

hobbyloser 18. Jul 2003 18:46

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
wenn ich das richtig verstanden habe..geht das auch ganz einfach
Code:
str := '/kick name';
delete(str,1,6);
somit werden beim string str ab dem ersten zeichen sechs zeichen entfernt, also hast du nur noch der name.
peace

Stanlay Hanks 18. Jul 2003 21:12

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Nicht umbedingt. hinter dem Namen kann ja auch noch irgendwas anderes stehen. Aber dieses Delet kannte ich auch noch nicht. Tja, man lernt eben nie, nie aus...

Man liest sich, Stanlay :hi:

Nicodius 18. Jul 2003 21:52

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Um ehrlich zu sein, hobbylooser: Nun versteh ich noch weniger :mrgreen:
Denn /kick 'hierstehtdername' bringt mir nix wenn das gelöscht wir Ich brauch den namen doch ;) um in in einer anderen Richedit zu löschen ;) Tja deshalb würde ich gerne NUR den Namen festellen um in in der Richedit zu LÖSCHEN :lol:


Na dann, schönen Abend

Nicodius

Daniel B 18. Jul 2003 22:02

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Hallo,

dann schau Dir doch Copy und Pos an und nicht Delete.

Grüsse, Daniel :hi:

Christian Seehase 18. Jul 2003 22:23

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Moin Daniel,

schau Dir mal mein erstes Posting an :mrgreen:

Daniel B 18. Jul 2003 23:35

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Moin Christian,

schau Dir mal die drei Beiträge vor meinem an, ich glaube das Dich niemand verstanden hat, daher habe ich es einfach nochmal versucht. ;)

Grüsse, Daniel :hi:

Stanlay Hanks 19. Jul 2003 10:46

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Zitat:

Zitat von Nicodius
Um ehrlich zu sein, hobbylooser: Nun versteh ich noch weniger :mrgreen:
Denn /kick 'hierstehtdername' bringt mir nix wenn das gelöscht wir Ich brauch den namen doch ;)

Mit dem Befehl von Hobbylooser löscht du ja nicht den ganzen String, sondern du löschst nur die Zeichen 1 bis 6 aus dem String :wink:

Heißt im Endeffekt, dass du aus dem String '/kick name' nur '/kick ' löschst. der Name dahinter bleibt ja :wink:

Man liest sich, Stanlay :hi:

Duffy 19. Jul 2003 12:25

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Nicodius,
vielleicht hilft Dir dieses Beispiel weiter. Hiermit kannst Du limited Strings in seine einzelnen Komponenten zerlegen und hast sie anschließend in einem TStrings Object stehen.
bye

iLLe 19. Jul 2003 15:37

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Zitat:

Zitat von Basic-Master
Hi,
das geht wenn du mit copy+pos arbeitest:
Delphi-Quellcode:
var a,b,c:integer;
   s, temp, suche:string;
begin
a := 0;
s := 'das hier ist ein toller test. hier isser.';
temp := s;
suche := 'hier';
for a := 1 to length(s) do begin
  c := pos(suche, temp);
  if c <> 0 then begin
  b := length(s) - length(temp);
  showmessage('An Position "' + inttostr(c + b) + '" ist ein "' + suche + '".');
  temp := copy(temp, c + length(suche), length(temp));
  end;
end;

ich versteh das irgendwie auch nicht vielleicht kannst du ja mal paar komentarzeilen dazueditieren intressiert mich mich jetzt nämlich :mrgreen:

Basic-Master 19. Jul 2003 18:58

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Zitat:

Zitat von iLLe
Zitat:

Zitat von Basic-Master
Hi,
das geht wenn du mit copy+pos arbeitest:
Delphi-Quellcode:
var a,b,c:integer;
   s, temp, suche:string;
begin
a := 0;
s := 'das hier ist ein toller test. hier isser.';
temp := s;
suche := 'hier';
for a := 1 to length(s) do begin
  c := pos(suche, temp);
  if c <> 0 then begin
  b := length(s) - length(temp);
  showmessage('An Position "' + inttostr(c + b) + '" ist ein "' + suche + '".');
  temp := copy(temp, c + length(suche), length(temp));
  end;
end;

ich versteh das irgendwie auch nicht vielleicht kannst du ja mal paar komentarzeilen dazueditieren intressiert mich mich jetzt nämlich :mrgreen:

na klaa:
Delphi-Quellcode:
var a,b,c:integer;
   s, temp, suche:string; //Variablen
begin
s := 'das hier ist ein toller test. hier isser.'; //der hauptstring, der durchsucht werden soll
temp := s; //damit s nicht verändert wird, wird s an temp übergeben
suche := 'hier'; //danach wird gesucht
for a := 1 to length(s) do begin //schleife
  c := pos(suche, temp); //hier wird immer nach dem nächsten suchen gesucht und anschliessend an c übergeben
  if c <> 0 then begin //nur wenn c auch ne position ist
  b := length(s) - length(temp); //hier wird die richtige position ausgerechnet, sonst würde die position nicht stimmen, an der es gefunden wurde
  showmessage('An Position "' + inttostr(c + b) + '" ist ein "' + suche + '".'); //gibt halt ne meldung aus wo was gefunden wurde
  temp := copy(temp, c + length(suche), length(temp)); //hier wird der string zurechtgeschnitten, sonst würde immer die gleiche position rauskommen, an der das erste gefunden wurde...
  end;
end;

iLLe 20. Jul 2003 13:16

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Die drei zeilen kommen mir chinesisch vor :mrgreen: liegt wohl daran das ich anfänger bin :roll:
Code:
c := pos(suche, temp);
b := length(s) - length(temp); // vorallem die zeile ??!
temp := copy(temp, c + length(suche), length(temp));
vorallem die zweite zeile irgendwie denk ich falsch glaub ich

iLLe 20. Jul 2003 22:35

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
und die ausgabe c+b mhh.. irgendwie leuchtet mir nicht ein :(

iLLe 20. Jul 2003 23:40

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Naja ich glaub ich versteh gar nicht richtig um was es dabei geht :|

Basic-Master 21. Jul 2003 06:02

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Hi,
1. Zeile: Hier wird C die Position von Suche im Temp-String zugewiesen.
2. Zeile: Hier wird die Wirkliche größe ermittelt, sonst wäre die Position immer kleiner als das wirkliche Ergebnis (Länge von S - Länge von Temp)
3. Zeile: Hier wird der String "abgehackt" sonst würde immer ne Endlosschleife kommen (falls der gesuchte Begriff drin ist). Das erklärt dann auch Zeile 2.

Nicodius 21. Jul 2003 08:13

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Frage könntet ihr es mir so erklären das es mit meinen Komponenten funktioniert ? bitte :lol:

Also

in Edit1 wird /Kick Name reingeschrieben. Der "Name" wird dann aus dem Richedit1(bei mir als Memo2 betitelt ;) ) geworfen. Dann steht in Edit1 wieder nichts.


Danke :D

Duffy 21. Jul 2003 08:43

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Nicodius,
wie wärs mit dem Beispiel.
bye

iLLe 21. Jul 2003 10:17

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Zitat:

Zitat von Basic-Master
Hi,
1. Zeile: Hier wird C die Position von Suche im Temp-String zugewiesen.
2. Zeile: Hier wird die Wirkliche größe ermittelt, sonst wäre die Position immer kleiner als das wirkliche Ergebnis (Länge von S - Länge von Temp)
3. Zeile: Hier wird der String "abgehackt" sonst würde immer ne Endlosschleife kommen (falls der gesuchte Begriff drin ist). Das erklärt dann auch Zeile 2.

Wenn ich die länge von s also den gesamten string und davon temp abziehe und in Temp steht ja die position des ersten buchstaben im gesuchten wie komm ich da dann aufs wirkliche ergebniss oder hatt temp nen anderen wert?

Nicodius 21. Jul 2003 14:22

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Danke Duffy!! Jetzt hab ichs Sehr nett von dir, jetzt shcaff ichs :mrgreen:

Danke nochmal an alle für die Hilfe :bounce2:

iLLe 21. Jul 2003 16:25

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
das mit dem abziehen is mir nicht klar und was in welcher variable da steht naja aber egal ich will nciht nerven ^^

Nicodius 21. Jul 2003 19:06

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
*heul*


Das geht nicht bei Delphi3 Pro! :( Danke trotzdem Duffy

WAS SOLL ICH JETZT AMCHEN :( :lol:

Duffy 21. Jul 2003 19:07

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Hallo Nicodius,
was geht nicht?
bye

iLLe 21. Jul 2003 20:51

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Ich habs mir nochmal angeguckt ich bin echt zu dumm abe rich wills wissen :( könntest du maybe mal mit nem bsp so durchmachen was immer in variablen drin steht son kleines bsp wenns dir nichts ausmacht natürlich :(

Nicodius 25. Jul 2003 07:25

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Duffy: Dein Projekt geht nicht...
übrigens eins ist klar: das das nicht so zu löschen geht :/kick 1VorName 2NachName(unterleerzeichen)


egal: Dein Projekt geht nicht bei Delphi3!!

Duffy 25. Jul 2003 09:50

Re: Wie kann ich nach einem String den nächsten 'sehen'
 
Hallo Nicodius,
auch das löschen von /kick 1VorName 2NachName geht. Du mußt dann nur /kick "1VorName 2NachName" eingeben, also mit Gänzefüßchen.

Daß das Projekt so nicht funktioniert ist klar, Du kannst es nicht öffnen, da es mit D7 geschrieben wurde. Es hindert Dich aber keiner daran Dir den Quellcode anzuschauen und aus der Unit zu kopieren. Dann einfach in D3 Projekt eingefügt und fertig. Dieser sollte dann auch in D3 funktionieren, da es da schon TStrings und TStringlist gab. Ich kann es leider in D3 nicht testen, da ich kein D3 auf einem Rechner installiert habe.
bye


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:54 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