Seite 3 von 3
Verfasst: Montag 23. Dezember 2002, 21:19
von Milan
lol. nun, ob das sinn macht, hab ich mir noch gar nicht angeschaut, weil ich es erst einmal übersetzen wollte. dann hatte ich vor mir das näher anzuschauen. mein Problem ist aber, ich weiß nicht wie ich den headerteil übertragen soll:
ich hab das andere mit dazugeschrieben, damit man vielleicht etwas mehr rauserkennen kann. Ich kann mr jedoch nicht zusammenreimen, was das throws IOException heißen soll. normalerweise wirft man doch damit eine art Ausnahmme, hier speziell einen Datei-Fehler, oder? Weiter weiß ich auch nicht, ob VorbisInfo hier der Returnwert ist, oder nur der Name (denk ich mal mehr, nach deiner Erklärung

) mit Parametern ist.
Ich kann die Syntax von c,c++ und java nicht so gut, aber die hängen ja alle nen bissel zusammen...
Verfasst: Montag 23. Dezember 2002, 21:40
von Beyond
Wollte Dir gerade schon antworten und Du fragst genau die Sachen die Posten will
Also das besondere an
Code: Alles auswählen
/**
* Initializes Ogg Vorbis information based on the header from a stream.
* @param s an Ogg Vorbis data stream
*/
public VorbisInfo(InputStream s) throws IOException
ist, daß es die Klasse VorbisInfo initialisiert. Oben steht doch
Obige Deklaration ist ein Constructor in Java. Ein Constructor in Java heißt genauso wie die Klasse selbst. In Python hättest Du statt dessen
Das
bedeutet, daß beim Aufruf dieser Methode (hier des Constructors -- sprich erzeugen einer Instanz der Klasse) eine IOException auftreten kann. In Python gibt's ja auch Exceptions für alle möglichen Fehler. Java ist aber etwas statischer als Python, was Nach-
und Vorteile hat. Man darf nicht frölich wie in Python einfach eine Excpetion auslösen, sondern man muß schon im Vorfeld eine solche Möglichkeit ankündigen. Dann weiß der Java-Compiler bescheid und v.a. ein Programmierer, der das Modul / die Funktion benutzen will. Der kann sich dann überlegen, was bei einem solchen Fehler passieren soll z.B. MsgBox an Benutzer, die sagt das er ein Depp ist und nur .ogg-Dateien angeben darf (geht auch freundlicher z.B. "Das Programm RiesigDoof verursachte eine schwere ..."

)
In Python kann man nicht vorhersagen, was bei einem Funktionsaufruf so alles passieren kann, das macht die Programmierung schneller aber "schlampiger". Ein guter Programmierer (Alice) gibt halt die möglichen Fehler in seiner Doku an und ein weiterer guter Programmierer (Bob) beachtet die Doku und fängt die Fehler auch in Python ab.
Ich hoffe das hilft Dir weiter.
cu beyond
Verfasst: Montag 23. Dezember 2002, 21:50
von Beyond
Und nochwas: In Java wird ein "self" o.ä. nicht verwendet. Die Aufrufe
Code: Alles auswählen
fetch_header_and_packet(s);
interpret_header_packet();
fetch_header_and_packet(s);
interpret_header_packet();
beziehen sich aber auf die aktuelle Instanz von VorbisInfo.
Warum das ganze zweimal aufgerufen wird, verstehe ich auch nicht ganz. .ogg-Dateien bestehen aber aus Paketen. vielleicht benötigt man die beiden ersten Pakete, um alle Informationen zu sammeln. Aus dem Code konnte ich es nicht einfach ersehen.
Du kannst auch mal im Java-Code probieren, was passiert wenn Du eines der "Aufrufpaare" auskommentierst und Dir dann eine .ogg-Datei nochmal ansiehst (andere Werte?).
cu beyond
Verfasst: Dienstag 24. Dezember 2002, 11:28
von Milan
jetzt geht mir glatt ein ganzer Christbaum auf...

das mit dem self war mir schon klar, aber das die init so beschrieben wird hätte mir auch klar sein können. thx, werd mal sehen, ob ich demnächst das fertig mache. Heute hab ich noch zuviel zu tun, man will ja schließlich ein schönes Fest und bekommt auch viel Besuch...
cu. Milan
Verfasst: Montag 30. Dezember 2002, 04:47
von Beyond
Kommst Du klar mit der Implementation?
cu beyond
Verfasst: Montag 30. Dezember 2002, 08:03
von Milan
nein, leider nincht. Ich bin noch immer beim übersetzten. Ich komm nicht zurecht, weil ich nicht weiß wie ich manche Sachen wie zum Beispiel nicht wie ich einen Vector nach Python übertrage. Ich hab in den Dokus nichts gefunden und ich kann aber auch keine selber programmieren. Ich glaub ich lass das doch besser, weil ich dich dabei ziemlich lang aufhalten würde.

Verfasst: Montag 30. Dezember 2002, 14:22
von Beyond
Frag nur.
Ein Vector ist eine Liste (sowit ich weiß)
cu beyond
Verfasst: Montag 30. Dezember 2002, 15:24
von Milan
öhm... (

) soweit ich weiß, ist ein Vector ne Einheit für räumlich sachen, also höchstens ein dreidimensionales Array. Sowas kann ich mit listen immulieren (hab ich auch schon mal von der Schule her!), aber ich weiß halt nicht genau, ob es das wirklich ist...
Verfasst: Montag 30. Dezember 2002, 16:00
von joerg
Milan hat geschrieben:öhm... (

) soweit ich weiß, ist ein Vector ne Einheit für räumlich sachen, also höchstens ein dreidimensionales Array. Sowas kann ich mit listen immulieren (hab ich auch schon mal von der Schule her!), aber ich weiß halt nicht genau, ob es das wirklich ist...
Es gibt ein sehr gutes Paket von Konrad Hinsen namens ScientificPython, da ist u.a. auch eine Vektor-Klasse drin, die auf NumPy aufbaut und alle gängigen Vektoroperationen beinhaltet (viele sehr komfortabel per operator-overloading zu benutzen).
Aber Selbermachen schult natürlich mehr...
Gruss
Jörg
Verfasst: Montag 30. Dezember 2002, 16:34
von Milan
joerg hat geschrieben:Es gibt ein sehr gutes Paket von Konrad Hinsen namens ScientificPython, da ist u.a. auch eine Vektor-Klasse drin, die auf NumPy aufbaut und alle gängigen Vektoroperationen beinhaltet (viele sehr komfortabel per operator-overloading zu benutzen).
Aber Selbermachen schult natürlich mehr...
Gruss
Jörg
sicher, aber ich bin mir ja noch nicht sicher, was es denn nun genau ist. Vektorenrechnung, falls es das ist, haben wir erst nächstes Schuljahr (11.)...
Verfasst: Montag 30. Dezember 2002, 19:24
von Voges
Hallo!
Ich verfolge das hier zwar nur mit halben Auge, aber ging es Dir nicht ursprünglich um die Java-Klasse Vector (genauer: java.util.Vector)? Das ist (wie Beyond schon schrieb) tatsächlich nicht viel anderes, als eine Python-Liste und hat mit den Vektoren aus dem Mathe-Unterricht wenig zu tun.
Vielleicht kannst Du mal ein bisschen Java-Code posten, wo diese Vector-Klasse zum Einsatz kommt.
Jan
Verfasst: Montag 30. Dezember 2002, 22:18
von Beyond
Danke Voges

(Ist das ein Augenzwinkern?)
Falls sich jemand für Vektoren etc. interessiert, kann er sich den "Fischer":
Gerd Fischer: Lineare Algebra
kaufen. Der ist recht hilfreich auf diesem Gebiet.
Etwas spielerischer ist
PC Underground von Data Becker
dort kann man auch was über Vektoren ("echte" nicht die Java-Klasse, die eigentlich einfach eine Liste ist) und Matrizen erfahren.
NumericPython ist 'ne feine Sache aber ich hatte bisher (leider) keine Anwendung dafür.
cu beyond
Verfasst: Dienstag 31. Dezember 2002, 00:01
von Voges
Hallo Milan!
In einem Anfall von Langerweile habe ich mir mal den Java-Code angeguckt und ein wenig davon übersetzt. Die DEBUG-Ausgaben vom Javaprogramm und meinem sind sogar indentisch ;-)
Wenn Du Interesse hast, kannst Du Dir ja mal den Code angucken. Ich hab' ihn mal in das Test-Forum gepackt, damit man hier nicht soviel scrollen muss.
Jan