Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 28.06.2005, 21:10 Titel: Fehler in der Hello-World-Windows-GUI? |
|
|
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 |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 28.06.2005, 22:11 Titel: Fehler in der Hello-World-Windows-GUI? |
|
|
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 |
|
|
helpy
Anmeldungsdatum: 22.03.2005 Beiträge: 17
|
Verfasst am: 29.06.2005, 07:53 Titel: |
|
|
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 |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 29.06.2005, 10:34 Titel: |
|
|
Ah ja, danke mit byval klappt jetzt alles super. |
|
Nach oben |
|
|
JJ2005
Anmeldungsdatum: 29.09.2005 Beiträge: 11 Wohnort: Brüssel
|
Verfasst am: 29.09.2005, 15:44 Titel: |
|
|
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 |
|
|
helpy
Anmeldungsdatum: 22.03.2005 Beiträge: 17
|
Verfasst am: 29.09.2005, 17:05 Titel: |
|
|
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 |
|
|
JJ2005
Anmeldungsdatum: 29.09.2005 Beiträge: 11 Wohnort: Brüssel
|
Verfasst am: 30.09.2005, 15:27 Titel: |
|
|
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 |
|
|
|