Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » zeilenweise quelltext

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ] [ 7 ]
040
21.10.2003, 13:14 Uhr
geissbock



was willst du eigentlich damit aussagen?

C++:
/*
* @param    <code>key</code>    Key to compare
* @param    <code>str</code>    String to compare
*/


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
041
21.10.2003, 13:26 Uhr
virtual
Sexiest Bit alive
(Operator)


Guter Hinweis, schlechter Kommentar
key ist das Ding, was die Wildrads enthält, str ist der String, bei dem geprüft wird, ob er auf den key passt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
042
21.10.2003, 13:30 Uhr
geissbock



hatte ich mir ja fast gedacht aber das kam in der aussage für mich nicht ganz rüber(also es kam nicht rüber das du DAS damit meinst).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
043
21.10.2003, 13:34 Uhr
geissbock



also es sind schon ein paar fragen bei mir aufgetaucht. gehe es stück für stück durch. wenn du nix dagegen hast würde ich dir diese dann auch gern stellen. wenn du gleich sagst es wird dir zu viel dann lass ich es.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
044
21.10.2003, 13:38 Uhr
geissbock



z.b.


C++:
/*
     * Loop to consume the entire key
     */




bedeutet für mich so viel wie: schleife zum zerstören des gesamten schlüssels. das meinst du doch nicht damit, oder?

p.s. darf ich dein prog übernehmen? weil du hast dir ja die arbeit gemacht. da muss ich ja wenigstens fragen. ich wandel es zwar ab aber im großen und ganzen bleibt das gerüst ja.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
045
21.10.2003, 14:49 Uhr
virtual
Sexiest Bit alive
(Operator)


Nein, schleife zum durchgehen de gesamten Schlüssels. Damit es einfacher wird für Dich, sag ich Dir mal, was ich mir so globalgalaktisch dabie gedacht habe:
Nehmen wir mal das Pattern (Parameter key):

Code:
"*??abc??def*ghi*"

Das bedeutet, daß ein String, der Das Pattern matcht mit 2 oder mehr belibeigen Zeichen anfangen darf, dann soll "abc" kommen. Danach kommen zwei beliebige Zeichen und der feste Teil "def", gefolgt von 0 bis bel. viele zeichen und dann "ghi", am Ende nochmal beliebige Viele zeichen.
Die Routine arbeitet so, daß sie key in einzelnen Gruppen untersucht:

Code:
*??abc
??def
*ghi
*


Das fällt vielleicht nicht direkt ins auge, weil es in der Schleife gemacht wird und diese Zerlegung eher implizit geschieht. Aber im Prinzip werden immer wildcards gefolgt von einer Festen Zeichenfolge oder Key Ende als ein Teilstück betrachtet.
Für jedes Teilstück wird nun untersucht, ob überhaupt wildcards da sind, und was sie genau bedeuten. ? beudetet ja genau ein zeichen, * 0 oder mehr zeichen. Dh die Anzahl der ? gibt an, wie viele Zeichen mindestens frei sind. Ist noch mindestens ein * vorhanden gibt es keine Obergrenze. in var_min steht die Anzahl der ? und in var_max steht !=0, wenn ein * vorhanden ist.

Mit diesen Infos wird nun (soweit vorhanden), das nächste in Frage kommende Vorkommnis des Festen texts (abs) gesucht. Und so eben für jeden Teilbereich den key.

Sollte zwischendurch irgendeine ungereimtheit auftreten, wird angnommen, daß ein Mismatch vorliegt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
046
21.10.2003, 15:05 Uhr
geissbock



ok. das hat geholfen. weil grad die variablen sind schwierig zu verstehen.


C++:
/*
     * Final check
     */

    if (*str)
    {
        /* Mismatch (key too short) */
        return -1;
    }


der macht mir auch noch sorgen. versteh ich nicht! kannst du die anderen variablen mal kurz erläutern?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
047
21.10.2003, 15:31 Uhr
virtual
Sexiest Bit alive
(Operator)


Der von dir zitierte Fall soll folgende Situation abfangen:

C++:
key = "*abc"
str = "*abcd"


Ohne diese Abfrage würde ausgegeben, daß str key matcht, was aber nicht der Fall ist: str ist ein zeichen länger.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
048
22.10.2003, 15:06 Uhr
geissbock



ist es richtig, das je kleiner der match-wert desto besser die übereinstimmung?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
049
22.10.2003, 15:14 Uhr
geissbock



ich versteh bloß nicht wie ich für die wildcards /1 oder /2 einsetzen kann.


Bearbeitung:
wozu dient eigentlich fix_len und found?

Dieser Post wurde am 22.10.2003 um 15:20 Uhr von geissbock editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ] [ 7 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: