Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

wxWidgets in Linux

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 955
Wohnort: Austria

BeitragVerfasst am: 18.02.2009, 21:09    Titel: wxWidgets in Linux Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 955
Wohnort: Austria

BeitragVerfasst am: 20.02.2009, 17:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 20.02.2009, 17:40    Titel: Antworten mit Zitat

1) nö
2) Windows API | GTK
3) Nicht wirklich...
4) Windows API
5) 28398.org
6) Tja das Frage ich mich auch...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4648
Wohnort: ~/

BeitragVerfasst am: 20.02.2009, 18:00    Titel: Antworten mit Zitat

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 lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 955
Wohnort: Austria

BeitragVerfasst am: 22.02.2009, 18:35    Titel: Antworten mit Zitat

Mit welcher Software / Bibliotheken arbeitet ihr, damit eure Programme sowohl (möglichst ohne Änderungen) portierbar als auch andererseits an den Stil des jeweiligen Betriebssystemes angepasst aussehen und nicht exotisch erscheinen?

Sowas wie das hier ...
==> http://static.sftcdn.net/de/scrn/9000/9533/3_Adobe_photoshop_15.jpg
... gefällt mir zum Beispiel überhaupt nicht und ich finde ans Betriebssystem angepasste Layouts bei weitem schöner, wie z.B.
==> http://www.palettes.de/Bilder/AdobePhotoshop7.jpg
.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 22.02.2009, 19:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 955
Wohnort: Austria

BeitragVerfasst am: 22.02.2009, 20:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.02.2009, 20:38    Titel: Antworten mit Zitat

Naja den Wrapper müsstest du schon selber schreiben zwinkern
Aber dafür gibbets auch Tools zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 955
Wohnort: Austria

BeitragVerfasst am: 22.02.2009, 23:03    Titel: Antworten mit Zitat

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. zwinkern
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz