Basic4ppc - Windows Mobile Development  

Go Back   Basic4ppc - Windows Mobile Development > Foreign Languages > German Forum
Home Register FAQ Members List Search Today's Posts Mark Forums Read


Desktop.exe funktioniert, Device.exe nicht - was mache ich falsch?


Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 07-01-2007, 04:45 PM
pikdame's Avatar
Newbie
 
Join Date: Jun 2007
Posts: 4
Question Desktop.exe funktioniert, Device.exe nicht - was mache ich falsch?

Hallo, zusammen!


Ich bin noch ein totaler Anfänger und habe ein Problem. Dazu einige Informationen:

Mein Programm:
Ich habe ein kleines Spiel programmiert, bei dem es darum geht, rechteckige Teile zu verschieben (Im Original sind es Holzklötzchen). Diese Teile sind in meinem Programm Panels, auf denen ich ImageButtons untergebracht habe. Ein Klick auf einen solchen Button löst eine Bewegung des Panels aus, auf dem er sich befindet. Daß sich die Teile nicht übereinanderschieben, habe ich folgendermaßen erreicht: Von jedem Teil gibt es eine Projektion auf das ForeLayer, so daß ich über FGetPixel prüfen kann, ob neben einem Teil frei ist oder nicht. Diese Projektion wird beim Verschieben eines Teils gelöscht, danach wird das Teil verschoben und an seinem neuen Ort wieder auf das ForeLayer projiziert. In der Menüleiste befinden sich außerdem Befehle, die einem ermöglichen, den Ausgangszustand wiederherzustellen (die Daten dazu werden aus einer CSV-Datei geladen), einen Spielstand zu speichern oder zu laden (auch hierfür benutze ich CSV-Dateien), sich eine Info-Messagebox anzeigen zu lassen und eine andere Form aufzurufen, in der sich die Anleitung zum Spiel befindet.

Mein Problem:
Vom Code her dürfte das Programm eigentlich in Ordnung sein; jedenfalls funktionierte es beim Testen und als ich es als Desktop.exe kompiliert habe. Nun wollte ich es natürlich auch auf meinem PPC spielen und habe es als Device.exe kompiliert, aber auf meinem PPC läuft es nicht. Soll heißen: Die Form öffnet sich, es wird alles korrekt dargestellt, nur wenn ich auf die Buttons klicke, tut sich nichts. Allein der Menüpunkt "Info", der eine Messagebox öffnet, und der Menüpunkt "?", der eine andere Form mit der Spielanleitung öffnet, funktionieren. Das Laden eines Spielstandes ist ebenfalls nicht möglich, obwohl der Öffnen-Dialog dargestellt wird und ordnungsgemäß benutzbar ist. Das Speichern des Spielstandes ist möglich (im Moment kann ich halt nur die Ausgangskonstellation speichern, aber die Daten, die in der CSV-Datei landen, sind korrekt). Über das Herstellen der Ausgangskonstellation kann ich keine Angaben machen, weil ich ja erst gar nicht darüber hinauskomme und daher natürlich keinen Unterschied feststellen kann. Die Form läßt sich ganz normal schließen.

Meine bisherigen Maßnahmen:
Ich habe zum Vergleich eine andere, einfache Anwendung geschrieben, die zwei Zahlen zusammenzählen sollte (mit zwei Textboxen und einem Button). Die funktioniert auf meinem PPC.
Dann habe ich natürlich weiter überlegt, woran es liegen könnte, und kam zu dem Schluß, daß ich vielleicht Bibliotheken hinzufügen muß. Also tat ich das. Ich habe mich mal für die ImageLib.dll, die FormLib.dll und die TabControl.dll entschieden, weil ich den Eindruck hatte, daß diese etwas mit den Befehlen zu tun haben, die ich verwendet habe. Danach habe ich wieder zwei Anwendungen kompiliert. Fazit: Die neue Desktop.exe funktioniert, die neue Device.exe immer noch nicht. Und das ist der Punkt, an dem ich fragen möchte: Was mache ich falsch? Muß es noch eine andere Bibliothek sein? Ich könnte mir nicht vorstellen, welche, und möchte lieber nicht weiter herumprobieren, weil ich nicht weiß, wie sich das u. U. auf meinen PPC auswirken könnte.

Mein PPC: acer n30 mit Windows Mobile 2003 SE (Basic4ppc ist hier nicht installiert; ich programmiere nur an meinem Hauptcomputer).

Meine Basic4ppc-Version: Ich lese unter Menü>Help>About "Version 4.05".

Mein Quellcode: Sollte anhängen. Ich glaube, man kann sich sonst schlecht vorstellen, wie das ganze aussieht.

Wenn Ihr Euch bis hierher "durchgelesen" habt, schon mal vielen Dank dafür! Ich hoffe, Ihr könnt mir weiterhelfen!


Gruß,

pikdame.
Attached Files
File Type: sbp quovadis.sbp (21.3 KB, 24 views)
Reply With Quote
  #2 (permalink)  
Old 07-01-2007, 06:09 PM
specci48's Avatar
Basic4ppc Expert
 
Join Date: Apr 2007
Location: Germany
Posts: 638
Default

Hallo pikdame,

willkommen im Basic4ppc Forum.
Zunächst einmal

Als "totaler Anfänger" hast Du ein super Spiel programmiert. Ich habe mir zwar den Code nicht im Detail angesehen, aber die Umsetzung der (bekannten) Spielidee finde ich erste Klasse! Und die Beschreibung in Deinem Post kann man als kleinen Roman durchgehen lassen

Zunächst einmal etwas generelles zu den Zusatz-Bibliotheken. Diese werden nur benötigt, wenn Du spezielle Funktionen aus eben diesen Bibliotheken verwendest. Dann müssen Sie aber auch unter Tools - Components eingebunden werden, es muss ein entsprechenden Objekt per Menu Tools - Add Object oder per Programm erzeugt werden. Für die Lauffähigkeit der Anwendung sind dann genau diese eingebundenen Komponenten mit auszuliefern, sowohl auf dem Desktop als auch auf dem Device.
Lange Rede kurzer Sinn, Du hast nur Standardkomponenten verwendet, daher kann es nicht an fehlenden Bibliotheken liegen.
Ich habe das Programm einmal selbst übersetzt und auf meinen PPC übertragen ... und dort läuft es fehlerfrei!!! Ich kann Speichern und auch wieder Laden. Ein Klick auf eine "Blockkante" verschiebt den Block. Nur Neu funktioniert erst, nachdem ich mir selbst eine neu.csv angelegt hatte.

Jetzt stellt sich die Frage, warum läuft es bei mir und bei Dir nicht. Ich verwende zwar die Version 5.00, aber daran dürfte es eigentlich nicht liegen.
Als Test habe ich einmal das von mir erzeugte Device.exe angehängt. Probier doch bitte, ob diese Version bei Dir funktioniert.


specci48
Attached Files
File Type: zip Quo.zip (57.7 KB, 19 views)
Reply With Quote
  #3 (permalink)  
Old 07-01-2007, 06:46 PM
pikdame's Avatar
Newbie
 
Join Date: Jun 2007
Posts: 4
Default

Hallo, specci48,

vielen Dank für Deine Antwort und Dein Kompliment! Hat mich sehr gefreut.

Tut mir leid, daß Du Dir erst eine neu.csv anlegen mußtest! Ich hatte natürlich eine kreiert, habe aber leider vergessen, sie mit anzuhängen.
Das Einbinden der Bibliotheken hatte ich, soweit ich es beurteilen kann, genauso gemacht wie von Dir beschrieben, aber daran lag's ja nun nicht.

Vielen Dank auch für die kompilierte Datei, aber sie funktioniert leider auch nicht. Ich muß also wohl annehmen, daß es an meinem PocketPC liegt, oder?
Na, das ist was! Da schreibe ich ein Programm, und dann kann es womöglich jeder benutzen, nur ich nicht...

Glaubst Du, ich könnte es trotzdem unter "Share Your Creations" posten (dafür würde ich alles Deutsche erst ins Englische übersetzen)?


Gruß,

pikdame
Reply With Quote
  #4 (permalink)  
Old 07-01-2007, 09:21 PM
specci48's Avatar
Basic4ppc Expert
 
Join Date: Apr 2007
Location: Germany
Posts: 638
Default

Hallo pikdame,

ich fände es toll, wenn Du die Source unter "Shared Creations" allen zur Verfügung stellen würdest.
Trotzdem sollte man Deinen Fall nochmal näher betrachten. Es kann doch wohl nicht sein, dass die ganz normalen Standard-Funktionalitäten auf Deinem PPC nicht funktionieren. Damit wäre dann ja auch ein Zweck von Basic4ppc verfehlt: Auf dem Desktop entwickeln und auf dem PPC ausführen.

Nach meinen Erfahrungen in diesem Forum habe ich noch einen Lösungsvorschlag für Dich:
Du besitzt einen PPC mit Windows Mobile 2003 SE. Mit dem System wurde meist eine "frühe" Version des .Net CF 1 ausgeliefert und das hatte noch einige unangenehme Bugs. Ich weiß leider nicht mehr genau, welche Funktionen es betriftt, aber möglich wäre, dass hier genau so ein Fehler zuschlägt.

Daher mein Vorschlag:
Installiere auf Deinen PPC das letzte Update hierfür (.Net CF 1.0 SP3):
http://www.microsoft.com/downloads/d...displaylang=en

Momentan gehe ich jede Wette ein, dass Dein Programm danach funktioniert. Auch wenn Du es mit der Version 4.05 compilierst.

specci48
Reply With Quote
  #5 (permalink)  
Old 07-01-2007, 09:34 PM
Junior Member
 
Join Date: Apr 2007
Location: Germany
Posts: 34
Smile ich habs ...

Hallo Pikdame, es liegt an den Farben ... auf dem Desktop ist cGray = Hintergrundgrau (-8093052) ... auf dem PPC ist es bei mir (MDA compact) anders (-8355712) ... bau mal die beiden Zeilen ein, dann siehts Du es:

Code:
Sub qdreilinks_Click
Msgbox(cGray)
Msgbox(quovadis.FGetPixel(qdrei.Left - 2, qdrei.Top))
	If quovadis.FGetPixel(qdrei.Left - 2, qdrei.Top) = cGray Then
	qdreiErase
	qdrei.Left = qdrei.Left - 51
	qdreiAbb
	End If
End Sub
Ansonsten , nur leider habe ich das Spiel bisher nicht kapiert
Viele Grüße,
Stefan
__________________
iPAQ 6515, MDA compact
Reply With Quote
  #6 (permalink)  
Old 07-01-2007, 09:48 PM
specci48's Avatar
Basic4ppc Expert
 
Join Date: Apr 2007
Location: Germany
Posts: 638
Default

Hallo stbi,

dass mit den anderen Farbwerten ist normal, da ein PPC generell nicht so viele Farben darstellen kann wie der Desktop.
Außerdem läuft es meinem WM5 Device wie gesagt problemlos. Falls es auf Deinem auch nicht geht, solltest Du es auch einmal mit dem Update probieren.


specci48

P.S.: Die Spielregeln findest Du im Menü unter dem "?" ...
Reply With Quote
  #7 (permalink)  
Old 07-02-2007, 08:34 AM
Junior Member
 
Join Date: Apr 2007
Location: Germany
Posts: 34
Default

Hallo specci48,

ich wollte lediglich darauf hinweisen, dass man sich auf die Farben nicht verlassen kann, um freie Positionen zu finden, weil die eben von Gerät zu Gerät abweichen können.

Das Update auf SP3 hatte ich früher schon mal installiert, daher bin ich mir nicht sicher, ob es den Fehler behebt. Außerdem kann man davon ausgehen, dass die meisten Anwender ihren PDA so betreiben, wie sie ihn bekommen haben, also ggf. ohne SP3.

Ich persönlich würde Pikdame auch empfehlen, einen "geräteunabhängigen" Weg zu gehen und die freien/belegten Positionen über ein Array o.ä. verwalten.

Viele Grüße,
Stefan
__________________
iPAQ 6515, MDA compact
Reply With Quote
  #8 (permalink)  
Old 07-02-2007, 08:50 AM
pikdame's Avatar
Newbie
 
Join Date: Jun 2007
Posts: 4
Default

Hallo, allerseits!

Nur auf die Schnelle: Vielen Dank für Eure Tips. Ich habe gesehen, daß .Net CF 1.0 SP3 bei mir schon installiert ist, aber ich kann es ja mal deinstallieren und dann neu installieren. Falls das nichts bringt, könnte ich immer noch mit den Farben experimentieren. Vielleicht hilft's ja.
Ich werde mich heute abend wieder melden.

Bis dann,

pikdame.
Reply With Quote
  #9 (permalink)  
Old 07-02-2007, 04:32 PM
specci48's Avatar
Basic4ppc Expert
 
Join Date: Apr 2007
Location: Germany
Posts: 638
Default

Quote:
Originally Posted by stbi View Post
Außerdem kann man davon ausgehen, dass die meisten Anwender ihren PDA so betreiben, wie sie ihn bekommen haben, also ggf. ohne SP3.
Diese Aussage lasse ich mal so stehen, auch wenn ich der Meinung bin, dass die Anwendung ruhig vorschreiben darf, welche Systemvorrausetzungen für den Betrieb der Applikation gelten.

Quote:
Originally Posted by stbi View Post
Ich persönlich würde Pikdame auch empfehlen, einen "geräteunabhängigen" Weg zu gehen und die freien/belegten Positionen über ein Array o.ä. verwalten.
In diesem Punkt bin ich ganz Deiner Meinung.

Quote:
Originally Posted by stbi View Post
ich wollte lediglich darauf hinweisen, dass man sich auf die Farben nicht verlassen kann, um freie Positionen zu finden, weil die eben von Gerät zu Gerät abweichen können.
Warum sollte dies nicht gehen? Es ist richtig, dass die Werte auf dem Desktop und dem Device unterschiedlich sind, aber dafür verwendet man ja gerade solche Konstanten, statt mit konkreten Werten zu arbeiten. Wenn ich auf dem Device einem Element die Farbe cGrey spendiere, dann kann ich diese Farbe anschließend auch wieder problemlos abfragen, denn sowohl beim Setzen als auch beim Abfragen wird immer auf den device-internen Wert geprüft.
Und noch einmal der Hinweis: Ich habe ein Gerät mit WM5 der "ersten Version", d.h. mit .Net CF 1.0 SP3, und bei mir läuft das Spiel fehlerfrei!

Halten wir also Fest:
a) Es ist sinnvoll, die Prüflogik in dem Spiel (etwas) zu überarbeiten
b) Das aufgetretene Problem liegt nach euren Aussagen nicht an einer "alten" .Net CF Version
c) Das Problem ist würdig, mit Hilfe der restlichen Forumsmitglieder noch näher untersucht zu werden (ich persönlich mag solche Dinge nicht, wo niemand eine plausible Erklärung für hat )




specci48

Last edited by specci48 : 07-02-2007 at 08:29 PM.
Reply With Quote
  #10 (permalink)  
Old 07-02-2007, 08:43 PM
pikdame's Avatar
Newbie
 
Join Date: Jun 2007
Posts: 4
Default

Hallo, specci48 und stbi!


Gute Nachrichten: Jetzt läuft's!

Aber nun genauer: Es hat leider nichts gebracht, .NET CF 1.0 SP3 neu zu installieren.

Also habe ich mir den Hinweis mit der Farbe von Dir, stbi, zu Herzen genommen. Ich habe cGray durch cBlack ersetzt, weil m. E. schwarz und weiß einfach in allen Systemen den gleichen Wert haben müssen, und siehe da: Es geht! Du lagst also vollkommen richtig. Ich wäre nie darauf gekommen, weil ich dachte, Konstanten wären überall konstant. Für WM 2003 SE offenbar nicht... Sollte man sich vielleicht merken.

Das mit der Verwaltung der Positionen über ein Array klingt interessant. Ich hatte auch ursprünglich nach einem anderen Weg gesucht, die Positionen der Teile zu überprüfen, aber ich wußte nicht, wie ich es anfangen sollte. Dann kam ich auf die Idee mit den Farben und habe nicht mehr über eine evtl. günstigere Lösung nachgedacht. Das könnte aber durchaus ein neues Projekt für mich werden. Also danke für die Anregung!

Ich denke, ich werde vielleicht dennoch den (anglisierten) Quellcode so posten, wie er im Moment ist. Mal sehen.

Vielen herzlichen Dank nochmal für die tolle Hilfe!



pikdame
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Device or Desktop DaveW Questions & Help Needed 2 11-07-2008 01:04 PM
Tabelle speichert Daten falsch oder gar nicht ... JOTHA German Forum 2 08-30-2008 10:08 AM
Calendar - Jahr funktioniert nicht sloopa German Forum 4 07-31-2008 12:15 PM
Using rapi from desktop to copy file from device to desktop sunnyboyj Questions & Help Needed 9 02-08-2008 12:40 PM
Auch: Desktop.exe funktioniert, Device.exe nicht ... ma-mo29 German Forum 3 11-20-2007 06:55 PM


All times are GMT. The time now is 11:44 PM.


Powered by vBulletin® Version 3.6.12
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.1.0