Schrift
[thread]4605[/thread]

"Transportroboter" für Perl Einsteiger

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
PerlProfi
 2006-12-12 21:47
#38978 #38978
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Ich habe mich an den letzten 2 Wochenenden damit beschäftigt einen "Transportroboter" mit grafischer Oberfläche in Perl zu schreiben.

Darauf bin ich gekommen, als wir in unserem Informatik Unterricht an der Schule NIKI verwendet haben um in PASCAL einzusteigen.

Das Programm ist schon recht weit, es funktioniert. Es fehlen nur noch kleine Verschönerungen. Ich habe es auch schon dem Kurs vorgestellt.
Es besitzt eine schöne grafische Oberfläche(Tk) mit Texteditor, "Arbeitsfeld"(das Feld auf dem sich der Roboter bewegt), Infofeld, und natürlich ein Menü.
Der Texteditor ist mit einem sehr simplen Syntaxhighlighter ausgestattet, und die Dateien werden mit Reitern in einem Tk::Notebook dargestellt.

Für die Bewegungen des Roboters habe ich 2 Module entworfen, die Arbeitsfelder benötigen 1 weiteres Modul, sowie Sequencen(eine Abfolge von Bewegungen die der Robotr ausführen soll) 1 Modul benötigen. Das Laden der Resourcen habe ich auch noch ausgelagert, und das Modul zum Erstellen der Oberfläche ebenfalls.
Für den Syntaxhighlighter habe ich das Modul Tk::SyntaxHighlight entworfen, allerdings benutze ich RegExps um die entsprechenden Code Stücke zuzuordnen, daher gibt es immer mal wieder Fehler beim highlighten.

Unser Lehrer möchte das jetzt gerne auf der Schul-Homepage ausstellen, allerdings muss ich es dazu compilieren.
Ich habe allerdings noch nie Perlprogramme compiliert, und würde gerne wissen wie ich das anstellen soll.
Ausserdem benutze ich @INC um diverse Bilder zu laden, und würde gerne wissen ob ich jetzt alles was mit dem Laden der Bilder zutun hat umschreiben muss, oder ob @INC trotzdem richtig gesetzt wird.

Weiterhin benutze ich eval() um die Perl-Programme in der IDE auszuführen. Würde das auch noch funktionieren, wenn das Programm compiliert wäre?

Oder soll ich einfach ein Paket mit allem nötigen zusammenstellen und meinem Lehrer anbieten?
Ich hab das schon mal mit pp versucht, aber dabei wird nicht alles notwendige mit in das Paket gepackt...

Nicht zuletzt würde ich gerne wissen was ihr von diesem Projekt haltet, und ob ich mir die Arbeit hätte sparen können, weil es soetwas schon gibt?

MfG PerlProfi\n\n

<!--EDIT|PerlProfi|1165953140-->
renee
 2006-12-13 09:14
#38979 #38979
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=PerlProfi,12.12.2006, 20:47][...]
Oder soll ich einfach ein Paket mit allem nötigen zusammenstellen und meinem Lehrer anbieten?
Ich hab das schon mal mit pp versucht, aber dabei wird nicht alles notwendige mit in das Paket gepackt...
[...][/quote]
Was funktioniert beim Packen nicht?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2006-12-13 20:14
#38980 #38980
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
kann mir unter dem ding nix vorstellen.
willst du es veröffentlichen - jetzt neben der veröffentlichung auf eurer schul-homepage.

ansonsten schau dir mal CPAN:PAR und CPAN:PAR::Tutorial an!
PerlProfi
 2006-12-14 15:06
#38981 #38981
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
pp packt Tk nicht mit dazu:
Code: (dl )
1
2
3
4
5
6
7
8
Can't locate Tk.pm in @INC (@INC contains: CODE(0xe114d4) C:\DOKUME~1\Matthias\LOKALE~1\Temp\par-Matthias\cach
e-1166100356\inc\lib C:\DOKUME~1\Matthias\LOKALE~1\Temp\par-Matthias\cache-1166100356\inc CODE(0xd86c90) . COD
E(0xd86dc8)) at Roboter/Frame.pm line 9.
BEGIN failed--compilation aborted at Roboter/Frame.pm line 9.
Compilation failed in require at Roboter/IDE.pm line 12.
BEGIN failed--compilation aborted at Roboter/IDE.pm line 12.
Compilation failed in require at script/Roboter.PL line 20.
BEGIN failed--compilation aborted at script/Roboter.PL line 20.

Das war die Ausgabe des Executables, welches ich aus einer .par Datei erstellt habe.
Vielleicht kann man sagen, dass umbedingt Tk mit dazu soll?

Ich habe pp erstmal so packen lassen:
Code: (dl )
pp -p -o Roboter-0.4BETA.par Roboter.PL

Ich habe mir das Archiv angesehen und festgestellt, dass Tk fehlt, trotzdem mal ein Executable erstellt:
Code: (dl )
pp -o Roboter-0.4BETA.EXE Roboter-0.4BETA.par

Welches beim Ausführen obige Fehlermeldungen ausgibt.

Eventuell veröffentliche ich es.
Ich habe aber noch keinen Platz gefunden wo das hingehören könnte, habe selbst keine Homepage.

Wiki ist soetwas ähnliches wie Niki, nur in Perl programmiert, mit ein paar Veränderungen im Aufbau der GUI und einem erweiterten Funktionsumfang.
Wiki bietet objektorientierte und klassische Lösungen an, während Niki nur klassisch funktioniert, keine Variablen kennt, und noch nicht mal zählen kann :/
Da auch alle Programme, die innerhalb der IDE laufen in Perl geschrieben sind, ist Wiki erheblich einfacher, vielfältiger und mächtiger als Niki.
Natürlich ist PASCAL eine schöne Sprache, aber Niki unterstützt nunmal leider diese Sprache nicht ausreichend genug, um damit wirklich gut programmieren zu können.

MfG PerlProfi
renee
 2006-12-14 15:16
#38982 #38982
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du denn auch use Tk; mit drin? (Man beachte das kleine "k")...

Ich hatte damit noch nie Probleme...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2006-12-14 19:12
#38983 #38983
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Nicht im Hauptprogramm, aber in einigen Modulen.

Ausserdem werden ja andere Module(eigene), die ich nicht im Hauptprogramm einbinde automatisch mit gapackt, Tk aber nicht.

Mein Hauptprogramm sieht jetzt so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use strict;
#use warnings 'all';
no warnings 'all';
use Roboter::IDE;

# laden und starten der IDE
my $ide = Roboter::IDE -> new ("Roboter V0.4 BETA Entwicklungsumgebung - 2. Advent 2006 - Matthias Wienand");
$ide -> configure ();
$ide -> start ();

# beende das Programm, sobald der event-loop unterbrochen wird
exit;

__END__


Vielleicht sucht pp nur nach nicht standard Modulen?

Problem ist nur, dass mein Lehrer schon mal versiucht hat Perl auf seinem Schulrechner zu installieren, und das nicht funktioniert hat.

Daher kann ich nicht davon ausgehen, dass es auf anderen Rechnern der Schule funktionieren wird.

MfG PerlProfi

edit: Tk habe ich richtig geschrieben\n\n

<!--EDIT|PerlProfi|1166116378-->
renee
 2006-12-14 20:37
#38984 #38984
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, das macht eigentlich nichts. Du kannst ja mal die Option -B verwenden. Dann werden Standardmodule mitgepackt.

Tk ist aber kein CORE-Modul. Zur Not kannst Du mit -M Tk arbeiten!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2006-12-15 15:09
#38985 #38985
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Danke! So hats funktioniert, muss ich noch irgendwelche libraries mit dem executable zusammen tun, damit es auch auf anderen Rechnern funktioniert?

MfG PerlProfi
renee
 2006-12-15 15:48
#38986 #38986
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Eigentlich nicht... Ich würde es an Deiner Stelle trotzdem mal an eins oder zwei Rechnern testen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2006-12-17 18:26
#38987 #38987
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Klappt alles soweit ganz gut, aber das executable braucht sehr lange zum starten, ich brauche ja auch nicht alle module.
Einige Module die mit -B eingebunden werden ziehen das ganze sehr runter, Ex z.B. ist sehr groß, ich verwende es aber überhaupt nicht.

Leider funktioniert das ganze nicht mehr, wenn cih -B weglasse(-M Tk habe ich gelassen), dann wird Tk auch nicht richtig mitgenommen(u.a. fehlt das /auto Verzeichnis), dann funktioniert es sowieso nicht.

Gibt es noch andere Wege alles nötige einzupacke, ohne das noch zusätzliches mit gepackt wird?

MfG PerlProfi
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2006-12-12 21:47.