Laden...

Forenbeiträge von Chickenlord Ingesamt 114 Beiträge

12.06.2010 - 01:30 Uhr

Sofern du die Frames in einem Avi File hast, kannst du die AviFile Library verwenden.

29.03.2010 - 09:31 Uhr

Hi,
also aus einer Exe heraus diese selber zu ändern wäre schwer, aber sehe ich das richtig, dass die Exe die geändert wird eine zweite ist? Wenn ja, dann ist es möglich. Schön ist es aber nicht. Mir persönlich fällt da grade nur der Weg ein, den man schon früher bei nativen Exen ging (schätze mal bei .Net ist das ebenso). Das würde so ablaufen, dass du die Position des Icons in der Exe kennst (kann man irgendwie auch herausfinden, aber ka wie) und das neue Icon auf exakt die selbe Größe bringst, oder kleiner. Dann kannst du an eben die Stelle wo vorher das alte Icon stand, das neue schreiben. Vermutlich wird dein Icon etwas kleiner, dann musst du auffüllen (welche Bytes da erlaubt sind weiß ich leider nicht). Problem an der Sache: Das sieht evtl. unglaublich hässlich aus. Aber es geht 😉

Evtl. hat da aber noch jemand eine bessere Lösung, mir würde da als nächst6e Lösung nur noch Disassmeblen -> neues Icon rein -> Wieder zusammen schmieden einfallen.

07.03.2010 - 00:10 Uhr

Also meine Erfahrungen beüglich der Thematik sind, dass selbst wenn die Karte bezüglich der Ausgänge das packt, dass sie nicht die Leistung hat um zweimal Full-HD darzustellen. Bei Spielen sowieso nicht (da kann man ja schonmal den Champagner aufmachen, wenn man überhaupt HD bekommt) und bei Videos wirds auch verdammt knapp. Was geht ist, den Desktop zeimal darzustellen. Damit kämpfen die meisten Karten nicht besonders.

28.02.2010 - 20:53 Uhr

@pdelvo

Leider gibt es aber noch Punkte, an denen C# nicht mit C oder C++ mithalten kann, einfach weil die Optimierungen nur lokal in einem kleineren Gebiet gemacht werden und nicht auf einen größeren Bereich bezogen. Das kann teilweise einen Performance Unterschied von ca. 1 zu 7 ausmachen.
Bezüglich C# als Scriptsprache in Games kann ich aber aus Erfahrung mit Unity sagen, es ist super! Ich muss wohl keinem sagen, dass C# einfach und angenehm zu schreiben ist.

29.01.2010 - 20:38 Uhr

Du könntest theoretisch auf ffmpeg zurückgreifen. Ist natürlich in C++ geschrieben, aber sollte möglich sein. Die lib wird unter GPL veröffentlicht.

Zur AviFile Library: Auf Codeproject gibt es dazu ne nete Demo.

29.01.2010 - 20:34 Uhr

Yo ich danke dir. Damit wirds was.

28.01.2010 - 13:11 Uhr

Also so ungefähr wollte ich das ganze auch machen. Nur woher weiß ich denn, ob die Referenz gleich ist? Ich meine ich kanns ja nur über die Adresse im Speicher vergleichen, oder stehe ich aufm Schlauch? Bin leider was solche dinge angeht nicht ganz der Master. Normalerweise würde ich das ganze auch stumpf unsafe machen, aber Chefin sagt das darf ich nich, weil dann alle ihre Engine umstellen müssen usw. bla bla 😦
Bezüglich GCHandle. Das geht ja ansich, aber er meckert bei eigenen Klassen, dass sie keine primitiven Datentypen enthalten. sehe ich das also richtig, das ich bei eigenen Klassen nicht darauf zurückgreifen kann?
Weil wenn das so ist, dann lager ich meine Sachen echt in ne dll aus und darf dann unsafe arbeiten.
@ Tom nochmal
Was machst du, wenn ein Objekt noch das selbe ist und innerhalb dieses Objektes sich aber eine Referenz geändert hat? Weil das objekt dann ja eigentlich eben nichtmehr das selbe ist.

28.01.2010 - 12:52 Uhr

Gibt es den? Weil dann wärs total klasse, wenn du mir noch n Namen vorwerfen könntest 😉
Beim GCHandel hatte ich sogar schonmal geschaut, aber evtl. nicht genau genug. Da werd ich doch nochmal genauer in die Doku sehen.

27.01.2010 - 19:04 Uhr

Mhh, also fixed braucht unsafe pointer. Das war mir auch schon bekannt und fällt aber damit raus. Unsafe operationen macht unsre engine nicht mit (warum auch immer). Die Idee von Floste find ich ansich gut. Auch wenn ich das so nicht umsetzen kann (alle unsre Klassen leiten von einer anderen abstrakten Basis Klasse der Engine ab), werde ich mal schauen ob ich es so ähnlich hinkriege.

Ich danke euch aber für die Mühe und die Tips 😉

27.01.2010 - 18:30 Uhr

Yo ich wusste doch das mir hier geholfen wird, immer wieder klasse.
Problem ist, an den Klassen selber darf ich nicht wurschteln. Also ich darf schon, aber das sind wirklich verdammt viele Klassen an denen ich wurschteln müsste.

Noch eine Nachfrage:
Angenommen, ich hab irgendwo n Objekt das einen String als property hat. Pinned der den String dann auch? Oder muss ich das selber machen? Ich vermute, letzteres.

EDIT: Es ist sicher GC.Pinn()? Ich find das grade absolut nirgends.

27.01.2010 - 18:22 Uhr

Hiho!

Ich war eigentlich sicher, schonmal etwas zu dem Thema gelesen zu haben, aber wenn das der Fall ist, bin zu dumm es wieder zu finden.

Also ich habe eine Menge an Objekten A die (evtl.) alle jeweils eine Referenz auf ein Objekt B haben. Wenn ich nun das ganze serialisiere, dann habe ich natürlich keine Referenz mehr auf B. Und selbst wenn ich jeweils B mitserialisiere, dann hat jedes A nach dem deserialisieren sein eigenes B. Nun war mein Gedanke, ich gebe zum unterscheiden einfach die jeweilige Position im Speicher mit so dass bei jedem serialisierten B auch drin steht welche Referenz es war.
Ich hoffe soweit konnte man mir folgen.
Das problem ist, dass der GC theoretisch zwischendrin die Position von B im Speicher verschieben kann. Dann ist die Referenz zwar prinzipiell die gleiche, aber die Speicherposition nicht. Das heißt ich werde das beim Deserialisieren nicht erkennen, das beide B's ursprünglich mal das selbe Objekt waren.
Wie also kriege ich den GC dazu, eben dieses Objekt B nicht zu verschieben, bis ich ihm sage er darf wieder?
Wenn jemand ne viele bessere Idee hat nehm ich die natürlich auch gerne.

Viele Grüße,
chicken

22.12.2009 - 20:26 Uhr

Also dann mal los. Zunächst einmal, wenn deine exe die du starten willst, keine .net exe ist, hast du schlicht und ergreifend pech. Denn mit .net kannst du nur .net Assemblies aus dem Speicher heraus starten. Für eine native exe bliebe dir nur C/C++ (oder auch andere Sprachen mit gleicher Funktionalität). Dazu wie man eine .net Assemblie aus dem Speicher heraus startest, solltest du hier im Forum massig Threads finden.
Zum Packen/Entpacken im Arbeitsspeicher:
Wenn du mit Packen/Entpacken komprimieren meinst, dann nutzt du am besten die ICSharpCode.ZipLib dafür. Um damit im Arbeitsspeicher zu arbeiten, kannst auf MemoryStreams zurückgeifen. Ansonsten gäbe es da noch SevenZipSharp. Damit kann man auch direkt auf byte[]'s arbeiten.
Die Daten, also das auszuführende Programm und die dazu ehörenden ordner kannst du in gezippter oder in welcher Form auch immer, direkt an deine Assembly/Exe hängen (wirklich einfach dahinter schreiben). Auch dazu gibt es hier im Forum irgendwo etwas (habs leider grade nicht mehr im Kopf). Die daten kannst du im Code dann per Filestream auslesen, in dem du dir z.B. die Position merkst, an der der Code aufhört und die Daten anfangen.
Zum Thema Reflector: Da könnte dir ein Obfuscator zumindest etwas mehr Sicherheit bieten. Ich persönlich kenne als ordentliche, kostenlose Variante da nur den Phoenix Protector.
Hoffentlich hilft dir das etwas.
Greetz, der Chicken

23.11.2009 - 17:16 Uhr

Hi.

Ich wurschtel grade mit T4 rum und habe ein Problem. Ich möchte Klassen erstellen, die sich auf die Typen aus dem aktuellen Namespace bzw. des aktuellen Projects beziehen. Das heißt, ich will alle Typen aus dem Project bzw. einem Namespace im Project auselesen und dann bestimmte Typen filtern, dazu neue Klassen schreiben etc. So die Typen zu filtern krieg ich hin. Und in normalem Code kriege ich per Reflection auch die Klassen/Typen aus dem entsprechenden Namespace. Aber in den T4 Templates schaffe ich es nich. Wenn da also irgendwer eine Idee oder Lsöung hätte wär ich dankbar.

Greetz,
der Chicken

22.11.2009 - 19:21 Uhr

Hiho.

Ich bin quasi ein SQL Noob. Aber dennoch habe ich ein Problem. Ich soll das VS2010 EntityFramework benutzen und dabei folgendes realisieren: Es gibt irgendeine Tabelle "User", wobei jeder User ne ID hat (klar) und n Namen. Nun werden im Framework beliebige Entitys erstellt. Ich soll umsetzen, dass, sobald sie ein Feld "User" haben welches auf ein User Objekt bzw. die ID des Users verweist, bei einer Anfrage nur die Einträge eines Objektes ausgegeben werden, welche einen betimmten User (z.B. 1) oder gar keinen User, also null haben. Und das eben für jedes Objekt, was irgendwer später neu hinzufügt oder ein vorhandenes abändert. Dabei soll aber eben die Abfrage nich jedesmal geändert werden, sondern das "im geheimen" geschehen. Ich hoffe das isst verständlich, worum es geht.
Wäre sehr, sehr, sehr dankbar für Tips jedweder Art.

Greetz,
der Chickenlord

19.11.2009 - 15:14 Uhr

Yo super, danke für den Hinweis. Damit sollte ich arbeiten können. Immer wieder cool hier antowrten zu bekommen =)

18.11.2009 - 19:09 Uhr

Danke schonmal dafür. Ich will allerdings auch nur die Klassen-Namen in einem Namespace meiner eigenen und damit der aktuellen Assembly rausfinden. (Bitte nicht sagen, dass sehe ich doch. Darum gehts nicht.)

18.11.2009 - 18:36 Uhr

Hi,

ich habe die Frage, wie ich per Code die Namen aller Klassen in einem bestimmten Namepsace erfahren kann. Hat jemand dafür einen gescheiten Tip?

Greetz, der Chicken

16.10.2009 - 17:03 Uhr

Das mit der for-Schleife war nur ein Beispiel, um zu verdeutlichen was ich meine. Es geht halt nur darum, ob es prinzipiell möglich wäre.

16.10.2009 - 13:21 Uhr

Yo, also dass ich mir Methoden oder Klassen dafür machen kann ist klar. Es geht aber wirklich darum, mir einen eigenen Befehl zu definieren, einfach weils ne interessante und lustige Sache wäre.

15.10.2009 - 20:49 Uhr

Mhh Schade. Sonst hätte ich direkt angefangen, mir dafür den entsprechenden Präprozessor zu schreiben. Aber danke für die Antwort 😉

15.10.2009 - 20:13 Uhr

Also was ich will ist z.B. folgendes (evtl. kein gutes Beispiel, aber man weiß was ich meine schätze ich):
Ich programmiere irgendetwas in C#. Wenn ich nun Werte aus einem Array A in ein Array B kopieren möchte, könnte ich das per for-Schleife tun. Nun hätte ich nicht jedesmal Lust eine for-Schleife ein zu hacken. Also definiere ich mir einen Befehl to, so dass ich im C# Code folgendes machen kann:

... //irgendwelcher Code in C# in dem A und B initialisiert wurden.

A to B; //soll die Objekte kopieren

...// Wieder irgendwelcher Code in C#

Das "A to B" soll in diesem Fall durch die for-Schleife ersetzt werden, die die Werte kopiert.
Ich hoffe es wird klar, was ich meine.

15.10.2009 - 19:49 Uhr

Hi!

Also mir kam heute in der Uni die Idee, ob es eigentlich einen Weg gibt und wenn ja welchen, um eigen Sprachkonstrukte zu definieren. Also das ganze ist so gedacht, dass ich mir einen beliebigen Befehl definiere, der dann per Präprozessor substituiert wird, und das ganze nach möglichkeit ohne das mir VS alles rot anstreicht. Kann mir jemand sagen, ob das geht und wenn mir auch den ein oder Link oder Tip geben?

Greetz, der Chicken

12.10.2009 - 10:52 Uhr

Da hat ein User aus diesem Forum auch ein hilfreiches Tool, das einem die Arbeit mit IL-Merge abnimmt, gemacht. Ist sehr einfach zu handhaben und findet sich in Zusammenfügen von Assemblies (exe, dll) mit ILMerge im Visual Studio-Postbuild.

06.10.2009 - 18:33 Uhr

Hi. Es wäre noch ganz nett, wenn du deine Lösung hier posten könntest, damit andere sie auch kennen 😉

06.10.2009 - 17:42 Uhr

Hatte ebenfalls das Microsoft Press Buch. Ansich doch recht gut geschrieben und weil ich auch schon Java konnte und ein wenig C++, wars voll ausreichend. Aber ich hab mir auch das Galileo Buch angeschaut: Ebenfalls eine akzeptable Sache zum Einstieg. manchmal fand ich es aber ein wenig "durchgemixt".

05.10.2009 - 18:11 Uhr

Ja, das ist mir auch schon länger aufgefallen 😄 Das liegt aber doch ganz simpel daran, dass die Loader Klasse den entsprechenden Algorithmus anhand des Headers auswählt. Nach welchem Prinzip er den Algorithmus fürs Speichern auswählt ist mir aber nicht ganz klar. Er wählt anscheinend zwischen PNG und BMP. Wobei es möglich wäre, dass einfach immer PNG gewählt wird (solange nicht explizit was anderes angegeben), wenn möglich.

05.10.2009 - 17:17 Uhr

Hi also bezüglich Bitmaps:

//Neue, leere Bitmap im standard 24Bit RGB Format.
Bitmap bm = new Bitmap(640, 480, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

//Bitmap aus Datei erstellen
Bitmap bm = new Bitmap(string filename);

//Zeichnen kannst du darauf so nicht. Dazu brauchst du ein Graphics Object
Graphics g = Graphics.FromImage(bm);

Aber, ich habe das Gefühl, dass dir zu einem Paint Klon noch recht viel Basiswissen fehlt, sei mir nicht böse 😉 Ansonsten hat dir für die JPG Sachen zommi ja den Link gegeben.

04.10.2009 - 17:32 Uhr

Kleiner Hinweis an dieser Stelle. Du könntest die Plugins auch an deine Exe "anhängen" (sie wären also in der exe mit drin) und beim Aufruf alle angehängten Dinge laden. Das geht auf jedenfall. Ich weiß grade nicht wie, aber dass es irgendwie ging weiß ich. Da wird dir hier bestimmt jemand helfen können 😉

29.09.2009 - 17:56 Uhr

Versuchs mal hier auf Seite 15, Abschnitt 9.1. Da steht zumindest die RGB nach HSV Umrechung. Hab ich allerdings selbst nicht getestet. Falls du evtl. ne Umrechnung in YCrCb haben möchtest empfehle ich dir mein kleines Snippet. Ansonsten findest du zu YCrCb Formaten auch mehr unter fourcc.org.

Ausserdem findest du auf Codeproject:Manipulating colors in .NET - Part 1 auch noch zu so ziemlich allen Modellen das passende, auch die Umrechnungen.

Greetz, der Chicken

29.09.2009 - 10:53 Uhr

Besten dank an zommi, das werd ich doch mal googln.
Welchen algorithmus ich atm benutze, ist eine gute Frage. Ich mach einfach List.Sort(). Die ganzen Algorithmen kenne ich sonst auch, da ich grade eine Klausur darüber schreiben durfte... Ansonsten vergleiche ich die Werte, wie oben zu sehen, mit einer simplen While(eigentlich for) Schleife. Aber auf jedenfall schonmal danke, für die Antworten.

29.09.2009 - 02:03 Uhr

Naja also ablaufen tut das ganze folgendermaßen. Man nimmt eine Menge an original Daten und lässt sie jeweils um eine Stelle nach rechts rotieren und speichert jede Rotation in einer Liste, bis man wieder bei der Ausgangsmenge ist. Also ein total simples Beispiel wie eine Liste für die Eingabe "Hallo" aussehen würde:

Hallo
oHall
loHal
lloHa
alloH

Diese daraus entstehende Liste muss ich jetzt sortieren. Man kann sich vorstellen, wie viel das wird, wenn man z.B. 1mb Daten hat (Worst Case 1099511627776 Vergleiche). Dabei ist wichtig, das man sich natürlich nicht jedesmal einen neuen String speichert, sondern nur ein neues Objekt mit Referenz auf den Original String (oder byte array) und einem Index, wo der rotierte Wert startet. Hashen kann man leider nicht. Es ist zwar unwahrscheinlich, dass es gleiche Hashs für unterschiedliche Werte gibt, aber möglich. Und das darf nicht passieren, weil dann die Rücktransformation schiefgeht. Nach Kriterien hab ich schon gesucht, leider aber noch keine Gefunden. Mal zum anschauen meine CompareTo Methode, vielleicht hilfts:


//val ist string object und für alle Objekte vom Typ BWR bei einem Vergleich der selbe string.
//Pointer ist ein integer, der ein Rotations-Offset angibt. Im Regelfall nicht relevant, aber der volsständigkeit halber.
 public int CompareTo(BWR b)
        {
            if (b.Get(0) < this.Get(0))
            {
                return 1;
            }
            else if (b.Get(0) > this.Get(0))
            {
                return -1;
            }
            else
            {
                if (this.pointer == b.GetPointer())
                    return 0;
                int i = 1;
                while (i<val.Length)
                {
                    if (b.Get(i) < this.Get(i))
                        return 1;
                    else if (b.Get(i) > this.Get(i))

                        return -1;
                    else
                        i++;
                }
                return 0;
            }
        }

Achja, die Sachen stehen in einer List<T>.

Greetz, der Chicken

29.09.2009 - 01:40 Uhr

Hi!

Ich habe momentan ein kleines Problem. Ich habe eine Klasse (Burrows-Wheeler Transformation) in der ich extrem viele Vergleiche durchführen muss, zumindest im Worst und Average Case. Momenatn hab ich mirn eigenes CompareTo geschrieben, das zwei Objekte byteweise vergleicht. Das ist mir aber ansich zu langsam. Habt ihr eine Idee wies schneller geht?

Greetz, der Hühneradel

26.09.2009 - 02:22 Uhr

Mhh, das klingt wirklich sehr interessant. Muss ich mir auch direkt mal anschauen. Immerhin könnte damit so manche langwierige Operazion nochmal schneller gehn.

22.09.2009 - 12:12 Uhr

Also entweder ich sehe da jetzt was ganz falsch oder aber du machst es so:
Beim vergleich betrachtest du zunächst den Gang. Ist der identisch, betrachtest du den Platz und gibst dementsprechend den niedrigeren/höheren(wie dus willst) Platz zurück bzw. den Wert dafür. Sonst ist es egal und du gibst den entsprechenden Gang-Wert zurück.
Ich hoffe du verstehst, wie ich das meine.

21.09.2009 - 19:15 Uhr

Hi. Ich habe dein Tool noch nicht ausprobiert, aber ansich find ichs klasse. Das werd ich mi direkt mal saugen und sobald ein wenig Zeit ist ordentlich austesten. Damit könnten sich sehr lustige Dinge anstellen lassen.

Edit: Yo, scheint super zu funzen. Danke dafür.

21.09.2009 - 11:17 Uhr

Hi!

Ich habe die letzten Tage ein wenig Zeit damit verbracht ein Bildkomrpessions Tool zu basteln. Das ganze ist nichts großes, sondern der Versuch mich ein wenig mit den JPEG Algorithmen zu beschäftigen. Die Qualität ist gegenüber der von JPEG nicht wirklich besser, aber naja. Man kann nicht alles haben.

Features:

  • Normale Kompression, fast exakt so aufgebaut wie JPEG.
  • Kombinierte DCT/Wavelet Kompression (miese Qualität, aber super Kompression)
  • Wavelet basiertes Deblocking. Bewirkt etwas, aber es ginge bestimmt effektiver.

Ein Fehler der mir selbst bekannt ist, sind wirklich seltsame Artefakte die nach der Dekodierung auftreten. Bisher habe ich den Grund dafür aber noch nicht gefunden. Ein Freund von mir hat ausserdem beim Testen das Problem gehabt, dass sich die GUI ab und zu mal aufhängt. Da das Problem bei mir nicht auftritt konnte ich den Fehler leider auch noch nicht entfernen. Ausserdem sei noch anzumerken, dass es momentan recht langsam ist.
Ansonsten danke ich zommi dafür, dass ich seine MemBitmap Klasse verwenden durfte und hoffe dass ihr mich mit Beschwerden etc. bewerft, denn nur so wirds besser.

Greetz, der Hühneradel

EDIT: Es ist bewusst nur der Code, weil ich evtl. mit einem Build Patente verletzen KÖNNTE. Das nur als Info.

18.09.2009 - 09:15 Uhr

Also bei AForge ist mit Sicherheit das passende dabei.

16.09.2009 - 15:05 Uhr

Also ich bin kein DShow Programmierer, aber ich behaupte mal er meinte den Mpeg4 Decoder, denn der gibt dir im Endeffekt das eigentliche Bild zurück.

Zu den verschiedenen geladenen Filtern:

Als erstes mal wird die Datei vom Splitter in die verschiedenen Streams unterteilt. Also ein simples Beispiel: Ein Audio-Stream und ein Video-Stream (oder auch mehrere Audio Streams usw.). Der Mpeg Layer 3 Decoder erhält und decodiert dir den Audio-Stream und sendet ihn in deinem Fall an deine Default DirectSound Device. Der Video-Stream geht an den Mpeg4 Decoder und wird von dem in eine normale Bildfolge tranformiert, die dann an den Video Renderer geht. Somit erscheint ein lustig buntes Video auf dem Bildschirm und ein herrlich guter Klang ertönt aus deinen Lautsprechern. Sorry konnt ich mir nicht verkneifen, aber es hilft und reicht dir hoffentlich. Wenn nicht, hak nochmal nach.

07.09.2009 - 01:26 Uhr

Habe ich eine JPEG in dieser Größe mit z.B. nur blauer farbe, dann wird es in eine Bitmap ohne Exception eingelesen. Das klingt sehr sehr merkwürdig. Denn im Speicher ist das ganze meines Wissens nach ein unkomprimiertes ByteArray. Und auch die Menge der DCT Koeffizienten usw. ist für ein und die selbe Auflösung gleich. Also sollten zwei Bilder der gleichen größe die gleiche Menge an Speicher benötigen.
Da das nach deiner Aussage nicht der Fall ist, kannst du entweder hoffen, dass jemand ne andere Library kennt, die es besser löst oder aber schreibst dir das ganze selber. Irgendwie konnte man auch dafür sorgen, dass du mehr Speicher verwenden darfst, aber ich behaupte mal, dass ist keine Lösung.

01.09.2009 - 08:32 Uhr

Also ich frage mich, was für Bilder du hast und wie du die Werte setzt (oder auf was für einer Kiste du rechnest). Denn 4 Sekunden für ein Bild, das scheint mir doch recht extrem. Ich führe momentan die PNG-Prefilter, ColorSpace Konvertierungen, Diskrete Kosinus Transformationen und Motion Search zwischen zwei Bildern mit häufig mehr als einem Bild pro Sekunde durch. Und das ist doch deutlich rechenintensiver.

EDIT: Habe bei mir grade einen Test mit der MemBitmap gemacht und n Bild mit 1024*768 setzen lassen. Dauert 31ms!

31.08.2009 - 06:40 Uhr

Hi,

Ich bin ansich auch ziemlich zufrieden mit C#. Was mich persönlich stört, ist die Geschwindigkeit. Es gibt einfach Dinge, die man in C# nicht anzufangen braucht, weil es nie schnell genug sein wird. Da wäre im Endeffekt warscheinlich nur ein AOT Native Compiler die richtige Lösung. Aber ich greife so unglaublich ungerne zu C++, weil C# einfach viel schöner ist. Naja, evtl. ist es da tatsächlich eine Möglichkeit direkt in ILASM schreiben zu können. Unter Linux geht das übrigens schon, zumindest habe ich das in MonoDevelop oder Anjuta (weiß grade nichmehr welches es war) gesehn.

Greetz, der Hühneradel

27.08.2009 - 22:33 Uhr

Oder aber schau dir mal die MemBitmap Klasse an.

24.08.2009 - 00:14 Uhr

Es gibt Leute die sich mal an einem Converter versucht haben, aber wenn ich das richtig gesehen habe, ist aus dem Projekten nie was geworden. Also von der Syntax her sind C# und Java sich ja sehr ähnlich, aber ich wüsste keinen Weg wie man es portieren kann, ausser stumpfes "umtippen".

14.08.2009 - 23:14 Uhr

Ich verstehe, wie herbivore, dein Problem garnicht. Wieso willst du es auf einen String klatschen? Du kannst doch genauso gut auf dem Byte-Array arbeiten. Das ist auch die übliche Vorgehensweise. Sonst kannst du jedes byte auch noch auf einen char casten und dir daraus einen String basteln. Das kostet aber unnötig Zeit und macht absolut keinen Sinn. Also ich empfehle dir, arbeite auf Byte-Arrays und wenn du dann noch ein konkretes Problem hast, dann fragst du noch einmal nach. Bezüglich Datenkompression hab ich auch schon viel gemacht und ich gebe dir gerne ein paar Antworten 😉

13.08.2009 - 13:46 Uhr

Also in den meisten Beispielen bezieht man sich auf Texte, weil es so natürlich anschaulicher ist. Aber im Regelfall sind absolut alle Methoden auf Bytes umzusetzen, teilweise muss man sie nur etwas abändern. Ein Beispiel für einen Algorithmus der ansich nur für Text gedacht ist, wäre ACB. Aber selbst der ist mit viel Arbeit auf Bytes awendbar. Das größte Problem hatte ich beim "nachprogrammieren" meistens mit der Geschwindigkeit.

26.07.2009 - 20:31 Uhr

Also unter Mono solltest du nach Möglichkeit nur .Net 2.0 Assemblies laufen lassen. Es gibt auch 3.0 oder 3.5 Teile, die bereits implementiert sind. Die sind aber meistens weder stabil noch sind sie vollständig. Ansonsten gibt es in den meisten Fällen keine Komplikationen. Für den fall, dass es doch welche gibt, kannst du mit irgendeinem Befehl(den ich nichtmehr weiß) auch abfragen, ob das ganze grade unter Mono oder .Net ausgeführt wird. Soll also insgesamt heißen, bei .Net 2.0 ist Mono prinzipiell das gleiche 😉

23.07.2009 - 22:22 Uhr

Also der angesprochene Bartok-Compiler aus dem Singularity Project ist kein wirklich angenehmer Genosse. ICh kann nur davon abraten, damit irgendwas anzustellen. Ansonsten macht man sowas im Regelfall mit YACC oder GNU Bison. Diesen beiden Tools gibt man eine Grammatik und schaltet noch eine lexikalische Analyse dazu. Daraus wird dir dann (in welcher Form auch immer) source code gegeben, der sich zu einem Compiler kompilieren lässt. Ansich eine wirklich spannende Sache, aber auch sehr zeitaufwändig. Der letztendlich entstehende Compiler basiert dann übrigens auf C, also der Source des Compilers. Wenn man dazu noch Libraries definieren will/muss, dann tut man das meistens auch in C (oder evtl. sogar immer).

22.07.2009 - 19:15 Uhr

Annsonsten nimm ein normales Array und merke dir einfach immer den letzten Punkt, an dem du geschrieben hast in einer Variablen. Wenn du dann z.B. ein Array der Länge 10 hast wäre beim 10. einfügen noch fass[9] der richtige Befehl. Danach springst du wieder zur 0 und überschreibst somit automatisch das erste Element.

//Edit: Mir scheint Zommi hat was vergleichbares schon verfasst.

22.07.2009 - 17:34 Uhr

Kleiner Hinweis an der Stelle noch: Du könntest prinzipiell die libavcodec.dll, die alle Codecs beinhaltet, die ffmpeg unterstützt, verwenden. Allerdings kann ich dir nicht sagen, ob sie über com läuft. Aber es ist ansich einfacher, über die normalen VFW/DShow Interfaces zu arbeiten. Natürlich nur unter Windows, Linux ist nicht so ganz deren Fan 😉

22.07.2009 - 13:41 Uhr

Ähm XVID ist doch auch Avi gewesen, wenn ich mich grade nich irre. Da wurde glaube ich nur die Datei Endung geändert (genau wie bei .divx). flv wird da schon schwieriger.