Hi,
Ich habe folgendes Problem:
Ich möchte den String "*RST" mit einer bestimmten Länge an eine andere Routine übergeben. Dabei soll der zweite Parameter die Länge des Strings übergeben, in dem Fall 4.
Wie sorge ich dafür, dass automatisch die Länge des ersten Paramaters mit len() übergeben wird ?
g.write("*RST",4) als g.write("*RST",len())
Danke
Länge eines Strings
Öhm einfach
oder verstehe ich da etwas falsch?^^
gruss prosta
Code: Alles auswählen
len("*RST")
#oder ein ganzes beispiel
txt = "*RST"
g.write(txt, len(txt))
gruss prosta
hi,
ich habe eine ganze reihe von befehlen.
also nach dem schema
g.write("txt", 3)
g.write("irgendwas", 9)
g.write("string",5)
ich muss also selber nachzählen, wie viele zeichen der gesendete string beinhaltet. kann man sich das geschickt sparen, dass man selber nachzählen muss ?
ich habe eine ganze reihe von befehlen.
also nach dem schema
g.write("txt", 3)
g.write("irgendwas", 9)
g.write("string",5)
ich muss also selber nachzählen, wie viele zeichen der gesendete string beinhaltet. kann man sich das geschickt sparen, dass man selber nachzählen muss ?
1. Möglichkeit:riven hat geschrieben:hi,
ich habe eine ganze reihe von befehlen.
also nach dem schema
g.write("txt", 3)
g.write("irgendwas", 9)
g.write("string",5)
ich muss also selber nachzählen, wie viele zeichen der gesendete string beinhaltet. kann man sich das geschickt sparen, dass man selber nachzählen muss ?
g.write("txt", len("txt"))
g.write("irgendwas", len("irgendwas"))
g.write("string", len("string"))
2. Möglichkeit:
Warpperfuktions
Code: Alles auswählen
def gWriteWrap(string):
g.write(string, len(string))
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
So?
Code: Alles auswählen
g.write("txt", len("txt")
g.write("irgendwas", len("irgendwas"))
g.write("string", len("string"))
mit einer Liste kann man gut etwas für jedes einzelne Element ausführen:
Crush
Code: Alles auswählen
>>> txt = ['txt', 'irgendwas', 'string']
>>> for i in txt:
... print i, len(i)
...
txt 3
irgendwas 9
string 6
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Waere nicht schlecht, wenn du naechstes mal sagts, was genau nicht geht. Wenn g ein Objekt ist, beschwert er sich wahrscheinlich, dass er g nicht kennt. Das kann man so loesen:
Dann waere der Aufruf
return braucht es nicht. Die Funktion uebernimmt das write, was soll die Funktion da wieder zurueckgeben?
Code: Alles auswählen
def WriteWrap(g, string):
g.write(string, len(string))
Code: Alles auswählen
WriteWrap(g, "hallo")
Riven, erkläre doch mal bitte, warum du einer Funktion überhaupt die Länge mit übergeben musst... Sowas spricht in der Regel immer dafür, dass du versuchst, C in Python zu programmieren, und das kann man besser machen.
dass es was mit c zu tun hat, ist richtig. ich übergebe mit g.write zwei parameter, zum einen den string selbst und die stringlänge an eine in c geschriebene unterroutine, die dann den string unter verwendung des entsprechenden treibers über einen ieee-anschluss an ein gerät schickt.
warum dafür der parameter mit der stringlänge wichtig ist, weiss ich nicht.
warum dafür der parameter mit der stringlänge wichtig ist, weiss ich nicht.
Aber Du übergibst ein `str` Objekt, das heisst die Funktion muss die Länge auch selbst herausfinden können weil Python-Zeichenketten ihre eigene Länge kennen. Was ist das denn für eine Funktion?
C stellt Strings als einfache Arrays dar. Insofern gibt es in C keine einfache Möglichkeit, die Länge eines Strings herauszufinden. Deswegen musst du die Länge des Strings ebenfalls übergeben. Ansonsten gäbe es im C Programm möglicherweise Bufferoverflows oder anderweitige Fehler, wenn der Code versucht, auf Arrayelement jenseits der Grenzen zuzugreifen.riven hat geschrieben:warum dafür der parameter mit der stringlänge wichtig ist, weiss ich nicht.
Offenbar eine schlecht geschriebene Wrapperfunktion für eine binäre Bibliothek.BlackJack hat geschrieben:Was ist das denn für eine Funktion?