|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 18.02.2009, 21:09 Titel: wxWidgets in Linux |
|
|
Hallo,
Ich verwende für die graphische Oberfläche meines Programmes die Bibliothek wxWidgets 2.6 mit den C-Bindings aus wx.NET 0.71. Unter Windows funktioniert (bis jetzt) alles einwandfrei. Unter Linux hat entweder FreeBasic selbst, die Bibliothek oder der Wrapper Probleme.
Konkret tritt ein Problem beim Auslesen von Text aus einem Textfeld und dessen Konvertierung in einen ZSTRING PTR auf.
Beispiel-Code:
Code: | #include once "wx-c/wx.bi"
#define wxCLOSE_BOX &h1000
#define FALSE 0
#define TRUE NOT(FALSE)
declare sub App_OnInit( )
declare sub App_OnExit( )
declare sub btnTest_event( byval event as wxEvent ptr, byval iListener as long )
dim shared wx_app as wxApp ptr, wx_frame as wxFrame ptr, wx_panel as wxPanel ptr
dim shared as wxTextCtrl ptr txtTest
dim shared as wxTextCtrl ptr txtTest2
sub App_OnInit( )
wx_frame = wxFrame( )
wxFrame_Create( wx_frame, 0, -1, "Test-Anwendung ", wxSize( -1, -1 ), wxSize( 400, 400 ), wxDEFAULT_FRAME_STYLE or wxCLOSE_BOX or wxMAXIMIZE_BOX or wxRESIZE_BORDER, "frame" )
wx_panel = wxPanel_ctor2( wx_frame, -1, wxSize( -1, -1 ), wxSize( -1, -1 ), 0, 0 )
wxWindow_CenterOnScreen(wx_frame, wxBOTH)
' lblTest
dim as wxStaticText ptr lblTest
lblTest = wxStaticText()
wxStaticText_Create(lblTest, wx_panel, -1, "Geben Sie eine beliebige Zeichenkette ein:", wxSize(10,10), wxsize(-1, -1),0,0)
'txtTest
'dim as wxTextCtrl ptr txtTest
txtTest = wxTextCtrl()
wxTextCtrl_Create(txtTest, wx_panel,-1,"Geben Sie hier eine beliebige Zeichenkette ein", wxSize(10,30), wxsize(265,-1),0,0,0)
'btnTest
dim as wxButton ptr btnTest
btnTest = wxButton()
wxButton_Create(btnTest,wx_panel, -1,"Testen", wxSize(310,29), wxsize(70,-1),0,0,0)
wxEvtHandler_Proxy( btnTest, cptr( any ptr, @btnTest_event) )
wxEvtHandler_Connect( btnTest, wxEvent_EVT_COMMAND_BUTTON_CLICKED, -1, -1, 0 )
'lblTest2
dim as wxStaticText ptr lblTest2
lblTest2 = wxStaticText()
wxStaticText_Create(lblTest2, wx_panel, -1, "Ihre Eingabe:", wxSize(10,80), wxsize(-1, -1),0,0)
'txtTest2
'dim as wxTextCtrl ptr txtTest2
txtTest2 = wxTextCtrl()
wxTextCtrl_Create(txtTest2, wx_panel,-1,"Geben Sie hier eine beliebige Zeichenkette ein", wxSize(10,120), wxsize(265,-1),0,0,0)
wxWindow_Show( wx_frame, 1 )
wxApp_OnInit( wx_app )
end sub
sub App_OnExit( )
close
wxApp_OnExit( wx_app )
end sub
sub btnTest_event( byval event as wxEvent ptr, byval iListener as long )
select case wxEvent_GetEventType( event )
case wxEvent_EVT_COMMAND_BUTTON_CLICKED
dim as wxString ptr tmpwxStr
dim test as string
tmpwxStr = wxTextCtrl_GetValue(txtTest)
''FUNKTIONIERT NICHT:
test = *wxString_mb_str(tmpwxStr)
print "Eingabe: "; test
''FUNKTIONIERT:
print "Eingabe2: ";
for q as integer = 0 to wxString_Length(tmpwxStr)-1
print chr(wxString_CharAt(tmpwxStr, q));
next
print:print
wxTextCtrl_SetValue(txtTest2, test)
wxString_dtor(tmpwxStr)
end select
end sub
wx_app = wxApp( )
wxApp_RegisterVirtual ( wx_app, cptr( any ptr, @App_OnInit ), cptr( any ptr, @App_OnExit ) )
wxApp_Run(0,0)
end |
Bei der Ausgabe unter dem Bezeichner "FUNKTIONIERT NICHT" sind die ersten 8 Zeichen nur irgendwelche sonderlichen Zeichen, danach wird der String ganz normal fortgesetzt. Nur die ersten 8 Zeichen sind durch andere ersetzt.
Die zweite Ausgabe (im Quellcode unter dem Bezeichner "FUNKTIONIERT") gibt alle Zeichen einzeln aus. So funktioniert es.
Ich vermute, dass es ein Problem mit den Zeigern (Pointer) gibt.
Hat von euch schon jemand diese Bibliothek mit FB verwendet?
Hat jemand eine Erklärung bzw. eine Lösung?
Übrigens getestet unter:
- Windows XP (keine Probleme)
- KUbuntu 8.10 (Probleme)
- Sidux aktuelle Version (Probleme) _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 20.02.2009, 17:32 Titel: |
|
|
Hat noch niemand von euch wxWidgets unter Linux verwendet? oder überhaupt noch nie? ist bekannt, dass es Fehler mit der Bibliothek gibt?
Mit welchen Bibliotheken macht Ihr sonst graphische Oberflächen für verschiedene Betriebssyste? oder habt ihr sowas noch nie gemacht?
Sind Programme für Linux überhaupt sinnvoll / notwendig? verwendet irgendjemand das dann auch, wenn niemand etwas davon weiß? schreibt man normalerweise Programme nur für Windows, weil es sowieso unter Linux keine Verwendung dafür gibt?
Mit welchen Mitteln erstellt man in FB normalerweise graphische Oberflächen wie Fenster, Buttons, Checkboxes, usw. die man von heutigen Betriebssystemen von überall kennt? oder programmiert ihr hauptsächlich Konsolenanwendungen? oder solche mit eigenen Buttons, Checkboxes, Fenstern, ... die dann starr sind - nicht größenveränderlich, unter jedem OS gleich, usw.?
Wie oft verwendet Ihr FB? für was verwendet Ihr es? gibt es auch größere Projekte, bei dem es Verwendung findet? oder ist es nur eine kleine Hobby-Programmiersprache, die nur für kleine Spielereien verwendet wird und sonst C die Standardsprache ist?
Wie kann es z.B. sein, dass ein Bug, wie der in der InStrRev-Funktion, mehr als ein Jahr unentdeckt bleibt, obwohl er doch recht häufig auftritt? Wird FB so selten verwendet? oder ist es nur Zufall, dass diese Funktion so selten verwendet wird oder niemand den Fehler bemerkt hat?
______________________________________________________
Viele Fragen (teilweise auch weit über das Thema des Ursprungs-thread hinaus), ich hoffe dass ich davon einige beantwortet bekomme.
LG,
St_W _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 20.02.2009, 17:40 Titel: |
|
|
1) nö
2) Windows API | GTK
3) Nicht wirklich...
4) Windows API
5) 28398.org
6) Tja das Frage ich mich auch... |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4648 Wohnort: ~/
|
Verfasst am: 20.02.2009, 18:00 Titel: |
|
|
Zitat: | Sind Programme für Linux überhaupt sinnvoll / notwendig? verwendet irgendjemand das dann auch, wenn niemand etwas davon weiß? schreibt man normalerweise Programme nur für Windows, weil es sowieso unter Linux keine Verwendung dafür gibt? |
Meinst du jetzt bestimmte Programme oder Programme im Allgemeinen? Ich verwende privat fast ausschließlich Linux-Programme und schreibe meine Programme zunächst einmal unter Linux, unabhängig davon, ob sie überhaupt mal irgendjemand brauchen kann. Wichtig ist für mich erst einmal, dass ich sie brauchen kann (oder einfach nur zum Spaß schreiben will); wenn ein anderer sie dann auch verwendet, um so besser
Zitat: | Wie kann es z.B. sein, dass ein Bug, wie der in der InStrRev-Funktion, mehr als ein Jahr unentdeckt bleibt, obwohl er doch recht häufig auftritt? Wird FB so selten verwendet? oder ist es nur Zufall, dass diese Funktion so selten verwendet wird oder niemand den Fehler bemerkt hat? |
Ich weiß zwar von der Existenz von InStrRev, habe es aber bisher nie verwendet. Ich vermute mal, dass der Befehl sowieso bisher noch nicht sehr häufig verwendet wurde, weil er eben recht neu ist und viele erst einmal die Funktionen verwenden, die sie sowieso schon gut kennen.
Mein Lieblingsfehler
Code: | FOR i AS UBYTE = 10 TO 1 STEP -1 : PRINT i : NEXT |
ist scheinbar auch nicht all zu oft in Gebrauch.
Meine Buttons u. ä. habe ich bisher immer handgestrickt und werde wohl dabei bleiben, allein schon weil das Programm dann leichter portierbar ist. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 22.02.2009, 19:34 Titel: |
|
|
Dazu verwende ich kein FB, aber schau dir doch sonst mal Qt an, wenn du mit deren Lizenz einverstanden bist. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 22.02.2009, 20:22 Titel: |
|
|
Qt kenne ich. Die derzeitige Lizenz gefällt mir zwar nicht so gut, aber ab der nächsten Version gibt es sowieso eine andere Lizenz, die mir mehr zusagt.
Gibt es denn FB-Wrapper für Qt? Ich möchte eigentlich schon in FB programmieren und nicht in Python oder Cpp. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 22.02.2009, 20:38 Titel: |
|
|
Naja den Wrapper müsstest du schon selber schreiben
Aber dafür gibbets auch Tools |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 22.02.2009, 23:03 Titel: |
|
|
28398 hat Folgendes geschrieben: | Naja den Wrapper müsstest du schon selber schreiben
Aber dafür gibbets auch Tools |
Die Idee hatte ich ja schon (siehe http://forum.qbasic.at/viewtopic.php?t=6271) ...
... aber an der Umsetzung ist's bis jetzt gescheitert. Mir ist das zu kompliziert als das ich das Prinzip der ganzen hunderten von Dateien begreifen könnte, die man für die Verwendung der Bibliothek benötigt.
Ich habe nirgendswo eine ordentliche Erklärung dafür gefunden und auch Eure hat mir nicht die Erleuchtung gebracht.
__________________________________
Um wieder etwas näher zum ursprünglichen Thema zurückzukehren:
Hat jemand von euch wxWidgets schon einmal mit FB verwendet?
Oder hat sich schon mal jemand mit der Übersetzung der Qt Header oder allgemein beim portieren einer Lib für die Verwendung mit FB beschäftigt?
Natürlich freue ich mich auch auf Antworten zu den sonstigen obigen genannten Fragen, auch wenn sie vom Thema etwas bis sehr weit abweichen. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|