Fragen zum Contenvergleich

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
roth86
User
Beiträge: 10
Registriert: Dienstag 12. Dezember 2006, 11:19

Hallo zusammen, kann mir jemand ausführlich sagen was diese Funktion macht? Ich weiss, das sie für den Inhaltsvergleich zuständig ist der zuvor definiert worden ist. Ich sollte aber nun wissen was dieser Teil genau macht?

Vielen Dank für eure Antworten

Code: Alles auswählen

def CompareDefaultContents( api, incomingMessage, sentContentList ):
    
    index = 0
    missing = 0 
    mismatch = 0
    missingErrMsg = 'Missing Content Types'
    mismatchErrMsg = ' Dissimilar Content Types'
    compareDetail = ''

    compCrit = api.SetCompareCriteria( COMPARE_NAME, COMPARE_TYPE,\
                                 COMPARE_LENGTH, TOLERANCE_PERCENTAGE )

    for contentInfo in defaultContents:
        contentType = contentInfo[0]
        contentName = contentInfo[2]

        try:
            rcvdCont, detail = incomingMessage.SrchContentName( contentName )
        except:
            missing = 1
            missingErrMsg += '\n' + str( contentType ) + ' named ' + str( contentName )
            continue

        try:
            cmpResult, detail = rcvdCont.Compare( sentContentList[index],\
                                                  compCrit )
            compareDetail += str( detail ) + '; '
        except:
            mismatch = 1
            mismatchErrMsg += '\n' + str( contentType ) + ' named ' + str( contentName ) + '( '\
                              + str( sys.exc_info()[1] ) + ' )'
        index += 1    

    if missing or mismatch:
        errMsg = ''
        if missing:
            errMsg += missingErrMsg + '; '
        if mismatch:
            errMsg += mismatchErrMsg + '; '

        return FAILURE, errMsg
            
    return SUCCESS, compareDetail
[/code]
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hier dein erster Thread mit einer ähnlichen Frage: http://www.python-forum.de/viewtopic.ph ... ght=#52021

Den Code den du nun hier postest, hast du auch schon im anderen gepostet. Auf fragen hast du nicht reagiert!: http://www.python-forum.de/post-52107.html#52107

Soll ich weiter machen? -> http://www.python-forum.de/viewtopic.ph ... ght=#54925

BTW2: Auch hier ist die Frage offen.

Versteh mich nicht Falsch: Du postest Code und willst wissen was er macht. Auf Fragen die man dir aber stellst (z.B. was du an dem Code nicht verstehst) antwortest du nicht. Stattdessen machst du nun einen neune Thread auf, in dem du den gleichen Code postest und fragst erneut was er macht. Findest du das nicht eigenartig?


Bot?
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Hallo zusammen, kann mir jemand ausführlich sagen was diese Funktion macht?
Ich befürchte, dass wird dir keiner sagen können, da die funktion diverse Aktionen auf Objekte ausführt (api, defaultContents) über das aus dem geposteten Code leider nichts hervorgeht.
Davon ab, der code ist imho recht "unpythonic", er gibt z.B. einen fehlercode zurück, anstatt exceptions zu werfen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Posten wir uns doch gegenseitig Funktionen aus dem Zope-Quelltext oder aus dem Twisted-Quelltext und machen ein Quiz: "Wer hat eine Ahnung was die Funktion mach?t" Achja, Tipps geben ist verboten. Falls das zu leicht wird, können wir auch Funktionen aus SciPy nutzen. :twisted:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
roth86
User
Beiträge: 10
Registriert: Dienstag 12. Dezember 2006, 11:19

Ich wäre froh wenn mir jemand weiter hilft

Nun zu den fragen die ihr gestellt habt

Code: Alles auswählen

def CompareDefaultContents( api, incomingMessage, sentContentList 
def CompareDefaultContents = definiert die gesamte funktion
api = ein anderes tool
incomingMessage, sentContentList = Variablen mit dem Contentinhalt die später verglichen werden. Jedoch weiss ich nicht wie
cracki
User
Beiträge: 72
Registriert: Montag 25. Dezember 2006, 05:01

mehr info!

woher kommt das stueck? warum willst du das wissen? wie ist dein wissensstand?
...meh...
roth86
User
Beiträge: 10
Registriert: Dienstag 12. Dezember 2006, 11:19

Mein wissenstand ist nicht so gross. Ich bin zur Zeit in Ausbildung als Informatiker und habe ein tool das mms verschickt. Zum schluss vergleicht es noch die contents miteinander. Dieser Teil den ich abgebildet habe. Jedoch komme ich hier nicht mehr weiter bzw. ich verstehe die schritte nicht ganz genau. Ich sollte ja auch den Sinn verstehen. Das Programm läuft einwandfrei.
cracki
User
Beiträge: 72
Registriert: Montag 25. Dezember 2006, 05:01

frag doch mal die leute, von denen du den code hast.

wir hier sind genauso ahnungslos wie du.

code verstehen ist arbeit, also setz dich hin und streng dich an.
...meh...
roth86
User
Beiträge: 10
Registriert: Dienstag 12. Dezember 2006, 11:19

Ich habe leider niemand der mir hilft. Deshalb melde ich mich ja hier
BlackJack

Der Code ruft einige andere Funktionen auf, die wir nicht kennen, und greift auf Datenstrukturen zurück die uns auch nicht bekannt sind. Was erwartest Du, was man da sagen kann?

Und es wird wahrscheinlich auch nicht helfen weiteren Quelltext zu posten. Wenn der genauso schrecklich aussieht, wird niemand hier Lust haben sich da durchzuarbeiten. Halt Dich an den Programmierer oder wer auch immer Dir diesen Code gegeben hat.
Gnushi
User
Beiträge: 77
Registriert: Dienstag 12. Dezember 2006, 09:49

roth86 hat geschrieben:Ich habe leider niemand der mir hilft. Deshalb melde ich mich ja hier
Wenn ich einen fremden Quelltext verstehen möchte, so starte ich bei __main__().

Hat man dann in main() sowas wie
Foo()
Bar()

so schaue ich mir diese Funktionen an, nicht im Detail, sondern nur soweit ich einen Überblick bekomme. Du also solltest Dir mMn die Datenstrukturen "api", "rcvdCont" und "incomingMessage" etc anschauen. Was machen die dahinterstehenden Klassen? Anschließend erfährst Du fast beiläufig, was diese Funktion gerade tut. ;-)

Hoffe, ich konnte Dir helfen

Gnushi
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Könnte es sein, dass das Ding ein jython Skript ist und das eigentliche
Programm in Java geschrieben wurde ?

java.util.Comparator et al

Bei SMS Gateways is Java recht häufig anzutreffen.
Was den Code nicht durchschaubarer macht ...
roth86
User
Beiträge: 10
Registriert: Dienstag 12. Dezember 2006, 11:19

Nein, es wurde alles in Python geschrieben.
Den ersten Teil habe ich nun herausgefunden.
Jetzte fehlt mir nur noch dieser Teil. Vieleicht kann mir jemand helfen
try / except dient zur Behandlung von Fehlern Tritt im try- teil ein fehler auf so wird die Abarbeitung unterbrochen und automatisch in den except-teil gesprungen. Tritt kein Fehler auf, so wird der "except" Teil nie ausgeführt.
Nun die frage an euch was genau passiert?
hier noch ein paar variablen mit bedeutung die vorkommen, der rest kommt zum ersten mal vor:
incommingMessage = Inahlt der früher definiert worden ist .
contentName= Name des Inhalt (auch früher definiert)
sentContentList= Inhalt der früher definiert worden ist
contentType= Type des Inhalt (auch früher definiert)


Code: Alles auswählen

try:
            rcvdCont, detail = incomingMessage.SrchContentName( contentName )
        except:
            missing = 1
            missingErrMsg += '\n' + str( contentType ) + ' named ' + str( contentName )
            continue

        try:
            cmpResult, detail = rcvdCont.Compare( sentContentList[index],\
                                                  compCrit )
            compareDetail += str( detail ) + '; '
        except:
            mismatch = 1
            mismatchErrMsg += '\n' + str( contentType ) + ' named ' + str( contentName ) + '( '\
                              + str( sys.exc_info()[1] ) + ' )'
        index += 1   

    if missing or mismatch:
        errMsg = ''
        if missing:
            errMsg += missingErrMsg + '; '
        if mismatch:
            errMsg += mismatchErrMsg + '; '

        return FAILURE, errMsg
           
    return SUCCESS, compareDetail
Benutzeravatar
Luzandro
User
Beiträge: 87
Registriert: Freitag 21. April 2006, 17:03

roth86 hat geschrieben:incommingMessage = Inahlt der früher definiert worden ist .
contentName= Name des Inhalt (auch früher definiert)
sentContentList= Inhalt der früher definiert worden ist
contentType= Type des Inhalt (auch früher definiert)
Achso dann ist ja alles klar: es werden Methoden von zuvor definierten Objekten aufgerufen :roll:

Sorry, aber das ist ja echt mühsam - was erwartest du dir hier für eine Antwort? Man könnte gerade einmal raten, was die Funktionen ihrem Namen nach tun, aber wie soll dir hier irgendjemand sagen können, "was genau hier passiert"?
Und was den Blick in die Glasgoogle betrifft, nehme ich einmal an, dass sentContentList wohl auch eher eine Liste der zuvor versendeten MMS bzw. deren Inhalt ist und nicht unbedingt nur ein "Inhalt der früher definiert worden ist".
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

roth86 hat geschrieben:try / except dient zur Behandlung von Fehlern Tritt im try- teil ein fehler auf so wird die Abarbeitung unterbrochen und automatisch in den except-teil gesprungen. Tritt kein Fehler auf, so wird der "except" Teil nie ausgeführt.
Nun die frage an euch was genau passiert?
Das wird dir klar, wenn du das erste Tutorial über Python mal ansiehst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Nein ansehen ist nicht genug, ich würde *durcharbeiten* empfehlen. ;-)
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Ja, es lohnt sich 100%ig. ;) Aber auch hier einen Blick reinzuwerfen kann nicht schaden http://www.rg16.asn-wien.ac.at/~python/ ... /index.htm (Bis auf die Tatsache das es sich absolut nicht an PEP8 hält) :D
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

roth86 hat geschrieben:def CompareDefaultContents = definiert die gesamte funktion
api = ein anderes tool
incomingMessage, sentContentList = Variablen mit dem Contentinhalt die später verglichen werden. Jedoch weiss ich nicht wie
Wenn das für dich eine sinnvolle Aussage ist, hier die Antwort auf deine Frage: Die Funktion macht folgendes: sie nimmt eine Eingabe, und produziert eine Ausgabe.
Nicht genau genug? Genauer bist du auch nicht.
roth86
User
Beiträge: 10
Registriert: Dienstag 12. Dezember 2006, 11:19

nein, das ist nicht genug. ich möchte genau wissen was in try except passiert?
Antworten