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:

Fehler in der Hello-World-Windows-GUI?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 28.06.2005, 21:10    Titel: Fehler in der Hello-World-Windows-GUI? Antworten mit Zitat

Hallo,
also im genannten Programm aber auch in einigen Beispielprogrammen, die bei Freebasic dabei sind, kommt immer bei folgenden Zeilen
.hIcon = LoadIcon( null, IDI_APPLICATION )
.hCursor = LoadCursor( null, IDC_CROSS)
der Fehler Type Mismatch at parameter 2

Wenn ich jetzt die beiden Parameter in Anführungszeichen schreibe, klappt alles, aber scheinbar haben dann die Parameter keine Wirkung.
Also liegt das jetzt an mir (und warum) oder ist da wirklich ein fehler drin?

MfG, Tomtitom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 28.06.2005, 22:11    Titel: Fehler in der Hello-World-Windows-GUI? Antworten mit Zitat

Hallo,
kann ich leider nur bestätigen.
Als ich noch mit FB 0.13b gearbeitet habe, wurde das nicht als Fehler ausgegeben.
Siehe:http://forum.qbasic.at/viewtopic.php?p=10031#10031
Abhilfe: du kannst beide Werte auf 0 setzen oder
Code:
   .hIcon = LoadImage(hInstance, "C:\freebasic\bin\win32\res\fblogo.ico", _
                     IMAGE_ICON, 16,16, LR_LOADFROMFILE)
   .hCursor = 0
mal dies versuchen (den Pfad evtl. anpassen!!).
Gruß
Volta
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
helpy



Anmeldungsdatum: 22.03.2005
Beiträge: 17

BeitragVerfasst am: 29.06.2005, 07:53    Titel: Antworten mit Zitat

In der CVS-Version wurde auch das Beispiel geändert. Das sieht jetzt so aus (Auszug):
Code:
...
        .hIcon         = LoadIcon( null, byval IDI_APPLICATION )
        .hCursor       = LoadCursor( null, byval IDC_ARROW )
        .hbrBackground = GetStockObject( byval WHITE_BRUSH )
...

Hier wird im Aufruf explizit byval verwendet. Im ChangeLog von hello.bas steht:
Zitat:
changed: to pass integer values to byval string args now the BYVAL modifier must be used


cu, helpy


[edit]
Warum in GetStockObject( byval WHITE_BRUSH ) auch byval verwendet wird, weiß ich nicht. Es funktioniert auch ohne und das Argument von GetStockObject ist kein String ... byval wäre hier also nicht nötig.
[/edit][/b]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 29.06.2005, 10:34    Titel: Antworten mit Zitat

Ah ja, danke mit byval klappt jetzt alles super. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
JJ2005



Anmeldungsdatum: 29.09.2005
Beiträge: 11
Wohnort: Brüssel

BeitragVerfasst am: 29.09.2005, 15:44    Titel: Antworten mit Zitat

helpy hat Folgendes geschrieben:
In der CVS-Version wurde auch das Beispiel geändert. Das sieht jetzt so aus (Auszug):
Code:
...
        .hIcon         = LoadIcon( null, byval IDI_APPLICATION )
        .hCursor       = LoadCursor( null, byval IDC_ARROW )
        .hbrBackground = GetStockObject( byval WHITE_BRUSH )
...

Hier wird im Aufruf explizit byval verwendet. Im ChangeLog von hello.bas steht:
Zitat:
changed: to pass integer values to byval string args now the BYVAL modifier must be used


cu, helpy


[edit]
Warum in GetStockObject( byval WHITE_BRUSH ) auch byval verwendet wird, weiß ich nicht. Es funktioniert auch ohne und das Argument von GetStockObject ist kein String ... byval wäre hier also nicht nötig.
[/edit][/b]


Mit ByVal funktioniert's - aber warum wurde das geaendert?? Very confusing! Damit muesste man also jetzt die meisten API-
Aufrufe testen etc.; ausserdem wird MSDN "inkompatibel" mit FreeBasic:

HICON LoadIcon( HINSTANCE hInstance,
LPCTSTR lpIconName
);
Eindeutig ByRef, nicht wahr?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
helpy



Anmeldungsdatum: 22.03.2005
Beiträge: 17

BeitragVerfasst am: 29.09.2005, 17:05    Titel: Antworten mit Zitat

Im ChangeLog der Version 0.14b steht folgendes
Code:

- to make BYVAL AS STRING arguments more safe,
  as they are allowed in FB functions since
  version 0.13, if not passing pointers or
  numeric values such as NULL or 0, the BYVAL
  modifier will have to be used now (v1c)


In der aktuellen CVS-Version ist es aber wieder anders! Außerdem wurden alle header Dateien überarbeitet. ChangeLog der Version 0.15b:
Code:

- IMPORTANT: all the Windows API headers (under inc/win)
  were re-translated using the h2bi tool, the old sources
  are NOT compatible with those headers because the new
  ones use the C-like standard (pointers instead of BYREF
  arguments, etc). If you really want to still using the
  old headers, remove the inc/win dir and copy the old
  one over it - the old headers won't be anymore updated
  though (v1c)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
JJ2005



Anmeldungsdatum: 29.09.2005
Beiträge: 11
Wohnort: Brüssel

BeitragVerfasst am: 30.09.2005, 15:27    Titel: Antworten mit Zitat

helpy hat Folgendes geschrieben:

In der aktuellen CVS-Version ist es aber wieder anders! Außerdem wurden alle header Dateien überarbeitet. ChangeLog der Version 0.15b:
Code:

- IMPORTANT: all the Windows API headers (under inc/win)
  were re-translated using the h2bi tool, the old sources
  are NOT compatible with those headers because the new
  ones use the C-like standard (pointers instead of BYREF
  arguments, etc). If you really want to still using the
  old headers, remove the inc/win dir and copy the old
  one over it - the old headers won't be anymore updated
  though (v1c)

Wie kommt man da ran? Ich habe 015b installiert, aber fbc will nach wie vor das ByVal...
_________________
<a href="http://esl.jrc.it/envind/dashbrds.htm">The Dashboard - Basic forever!</a>
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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