Die Community zu .NET und Classic VB.
Menü

Ausschreibung: ICL-Icon

 von 

Beschreibung  

Kurzinfo

  • Titel: ICL-Icon
  • Ausschreibungsbeginn: 23.08.2003
  • Einsendeschluß: spätestens 06.09.2003
  • Auftraggeber:
  • Jury: Florian Rittmeier, , Eric Rietzke
  • Preisgeld: 50 Euro

Problem

Bei der Extraktion von Icons aus einer Icon-Libary (z.B. mit der Funktion ExtraktIconEx) wird nur die Extraktion von StandardIcon-Grössen (16*16 und 32*32) unterstützt. Grössere benutzerdefinierte Icons (z.B. 80*80) werden beim Extrahieren auf eine der Standardgrössen interpoliert und darunter leidet die Qualität der Darstellung.

Aufgabenstellung

Mit Hilfe von VB-Sourcecode (falls notwendig unter Verwendung von API-Funktionen) soll die gezielte Extraktion einzelner Icons aus ICL-Dateien ermöglicht werden, wobei kein Qualitätsverlust durch eine Interpolation erlaubt ist. Die Anzeige soll in einem Image-Objekt erfolgen.

Bedingungen

Dem Programm werden die Maße des zu extrahierenden Icons bekannt geben. Schön wäre es natürlich, wenn dies nicht notwendig wäre.

Der Lösungsweg ist sekundär. Die Zeit bis zur Lösung ist primär.

Der Sourcecode verwendet keine Komponenten (DLLs, Steuerelemente) oder externen Programme (wie Excel, Access usw.) außer den Standardsteuerelementen von VB und ggf. API-Funktionen (Kompatibilität mindestens ab Win98 aufwärts).

Der Sourccode wurde nicht von anderen Internetseiten kopiert (eine Übersetzung aus anderen Programmiersprachen ist zulässig).

Gewünscht ist VB5/VB6 Code.

Zusatzinfo

Wie unsere Recherchen bei Wotsit's Format ergaben, handelt es sich beim ICL-Dateiformat um umbenannte 16-bit Windows DLLs (NE format executable). Diese enthalten in der Regel nichts anderes als Ressourcen.

Der Auftraggeber war so freundlich uns eine ICL-Datei als Beispiel bereitzustellen. Das in dieser ICL-Datei enthaltene Icon hat eine Größe von 97x97 Pixeln.

Download der Beispieldatei 

Ermittlung des Gewinners

Bei dieser Ausschreibung ist es wichtig möglichst schnell eine Lösung zu finden. Der Einsender dessen Einsendung uns zuerst erreicht und dessen Einsendung die Aufgabe zufriedenstellend löst, erhält das Preisgeld.

Einsendungen müssen spätestens bis zum 06.09.03 erfolgen. Falls bis zu diesem Zeitpunkt keine Einsendungen eingegangen sind, kann die Ausschreibung verlängert werden.

Jedes der 3 Mitglieder der Jury wird bei dieser Ausschreibung den Quelltext und die Funktion der Einsendung(en) überprüfen und sofern das jeweilige Jurymitglied zu dem Schluß kommt, dass die Einsendung die Aufgabe zufriedenstellend erfüllt, wird sie ein positives Votum abgeben. Die Entscheidung erfolgt durch Mehrheitsbeschluss.

Weitere Regelungen

Einsendungen müssen per Email an gesandt werden.

Das Thema darf im Forum diskutiert werden, Einsendungen werden jedoch bis zum Einsendeschluß geheimgehalten.

Preisgeld

Das Preisgeld beträgt 50 Euro und wird per Überweisung an den Gewinner ausgezahlt.

Anmerkung

Alle Einsendungen dürfen nach Einsendeschluß von ActiveVB.de veröffentlicht werden.

Lösung

Zu dieser Ausschreibung erreichten uns vier Einsendungen: Die Erste war eine modifizierte Kopie eines Codes, der bereits auf anderen Websites (Vbaccelerator, Planetsourcecode) veröffentlicht ist und wurde daher nicht gewertet. Da der Code jedoch sehr gut auf deutsch kommentiert ist, haben wir ihn beigefügt. Eine weitere Einsendung erfüllte nicht die Kriterien, weil nur die API-Function ExtractIcon verwendet wurde und die großen Icons damit nicht dargestellt werden können. Die Einsendung von Andreas Schaek schied leider aus, da hiermit zwar die Beipieldatei -, nicht aber alle Arten von ICL-Dateien gelesen werden können. Die vierte und letzte Einsendung durch Guido Beckmann erreichte uns kurz vor Einsendeschluß und erfüllt alle Kriterien der Aufgabenstellung. Guido ist damit der Gewinner.

Download der Einsendungen 

Kommentar des Auftraggebers

Dies war das Erste mal, dass ich eine Problemstellung ausgeschrieben habe und ich bin überrascht, über das gute Ergebnis. Danke an Euch und an die Teilnehmer. Ich werde bei Gelegenheit mit Sicherheit wieder auf Euch zurückkommen.