Modul für Bildinfo's

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.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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:

Code: Alles auswählen

public VorbisInfo(InputStream s) throws IOException
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 :P ) mit Parametern ist.

Ich kann die Syntax von c,c++ und java nicht so gut, aber die hängen ja alle nen bissel zusammen...
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Wollte Dir gerade schon antworten und Du fragst genau die Sachen die Posten will :D

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

Code: Alles auswählen

public class VorbisInfo 
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

Code: Alles auswählen

def __init__(s):
   for ...
Das

Code: Alles auswählen

throws IOException
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 ..." :D)
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
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

jetzt geht mir glatt ein ganzer Christbaum auf... :D 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... :wink:

cu. Milan
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Kommst Du klar mit der Implementation?

cu beyond
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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. :(
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Frag nur.

Ein Vector ist eine Liste (sowit ich weiß)

cu beyond
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

öhm... ( :lol: ) 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...
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Milan hat geschrieben:öhm... ( :lol: ) 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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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.)...
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

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
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Danke Voges :wink: (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
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

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
Antworten