Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 15:43 Titel: The (un)perfect Operating System |
|
|
Das ist die Fortsetzung der letzten Beiträge des Trash-Threads.
raph ael präsentiert euch: THE PERFECT OPERATING SYSTEM!
Nochmal die Projektseite: *klick* Ich hab da ein Problemchen: Die Fenster werden mithilfe einer DLL erzeugt. Alle Daten befinden sich in einem benutzerdef. Dateintyp, windowh. Das ist der Compiller Output:
Zitat: | Command executed:
"d:\Programme\FreeBasic\fbc.exe" "D:\Programme\FreeBasic\pos\winman.bas" "-dylib"
Compiler output:
D:\Programme\FreeBasic\pos\winman.bas(3) : error 57: Illegal specification, at parameter 1: objekt
function killwindow (objekt as windowh) as integer 'Aufruf: Fenster zum löschen Rückgabe:
^
Results:
Compilation failed
System:
FBIde: 0.4.6
fbc: FreeBASIC Compiler - Version 0.15 for win32 (target:win32)
OS: Windows 98 ( A )
|
Tja. Der Code sieht so aus:
Code: | function killwindow (objekt as windowh) as integer 'Aufruf: Fenster zum löschen Rückgabe:
'TRUE wenn erfolg, FALSE wenn misserfolg
tempvar=openedthread
whattokill=objekt.handle
if tempvar > openedthread then
function=TRUE
else
function=FALSE
end if
exit function
end function
|
Der Datentyp steht in der Header-Datei standart.bi. _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 16:06 Titel: |
|
|
Ja, kann ich. Standart.bi:
Code: | ' Hauptdeklarationen - standart.bi
#define FALSE 0
#define TRUE not FALSE
dim shared openedthread as integer ' Threads die laufen
dim shared killallthread as integer ' TRUE=Alle Threads schließen, FALSE=nichts.
dim shared whattokill as integer ' Handle des Threads zum schließen.
dim shared tempvar as integer ' Kann man für verschiedenes brauchen.
dim shared windowImage(1 to 1000) as any ' Fensterspeicher
type windowh ' Fenster
title as string
sizeWith as integer
sizeHeigh as integer
fg as integer
hg as integer
handle as integer
exitButton as integer
importmant as integer
end type
type controlEl 'Steuerelement
title as string
sizeWith as integer
sizeHeigh as integer
fg as integer
hg as integer
handle as integer
end type
|
WinMan.bas:
Code: |
' Window Management Console - winman.dll
function killwindow (objekt as windowh) as integer 'Aufruf: Fenster zum löschen Rückgabe:
'TRUE wenn erfolg, FALSE wenn misserfolg
tempvar=openedthread
whattokill=objekt.handle
if tempvar > openedthread then
function=TRUE
else
function=FALSE
end if
exit function
end function
function drawWindow (daten as windowh) as integer ' Aufruf: Daten Fensterdaten Rückgabe:
'gleiche wie bei KillWindow
'Zeigt das Fenster an, registriert es nicht.
tempvar=openedthread+1
windowImage(tempvar)=IMAGECREATE(daten.sizeWith,daten.sizeHeigh+10,_
RBGA(64, 160, 0, 255)) 'Speicher für das Fenster
if windowImage(tempvar)=0 then 'IMAGECREATE liefert 0 zurück, wenn fehlschalg
function=FALSE
exit function
end if
line windowImage(tempvar),(0,0)-(daten.sizeWith,daten.sizeHeigh+10),_
daten.hg,BF 'Grundfenster
line windowImage(tempvar),(0,0)-(daten.sizeWith,daten.sizeHeigh+10),_
0,B 'Rahmen
line windowImage(tempvar),(0,0)-(daten.sizeWith,10),3,BF '1.Zeile
color 4,3
locate 1,3,0
print daten.title;
if exitButton=TRUE then
print " X "
end if
color fg,hg
function=TRUE
exit function
end function
|
Jetzt solltest du durchblicken . Weiter bin ich noch nicht, als nächstes wird wieder Mist gebaut: Die Threads und Steuerelemente . Nur, dass irs wisst. _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 07.05.2006, 16:11 Titel: |
|
|
So vom Schiff aus:
Hast du bei WinMan.bas die Standart.bi überhaupt eingebunden?
Also
Code: | #include "standart.bi" |
So wie ich das sehe, ist nur das der Fehler. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 16:20 Titel: |
|
|
Äh... Geht das? Der Code wird ja zu einer DLL... _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 07.05.2006, 16:24 Titel: |
|
|
Soviel ich weiss: Ja das geht, der Inhalt von stanart.bi wird ja einfach oben in dein Programm eingefügt.
Anderes Thema:
Hab was gefunden was du einbauen kannst:
Code: | Declare Function BlockInput Lib "user32" Alias "BlockInput" (ByVal flags _
As Long) As Long
Print "5 sekunden Maus und Tastatursperre"
BlockInput(1)
Sleep 5000
BlockInput(0)
Print "Sperre aufgehoben."
End |
Der Code ist irgendwannmal im Forum aufgetaucht und ich hab in jetzt auf meiner Festplatte wieder entdeckt. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 16:33 Titel: |
|
|
Ähh, irgendwas stimmt mit der Zeile Code: | dim shared windowImage(1 to 100) as any | nicht... da sagt der compiller: Zitat: | standart.bi(10) : error 26: Invalid data types
dim shared windowImage(1 to 100) as any |
Kapier ich nicht... any ist ja ein Datentyp, oder?
EDIT: Tschuldigung, Denkfehler! Hab' das PTR vergessen...
PS: Gute Idee! Das wird vorkommen, in der Konsole!
Noch ein EDIT: Fensterbasis... OK! Ist auf der Projektseite zum Download bereit. Bitte dringenst testen und das Ergebnis mir als PN zukommen lassen! _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
Zuletzt bearbeitet von raph ael am 07.05.2006, 16:45, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 07.05.2006, 16:41 Titel: |
|
|
http://any.freebasic.de
Zitat: | Achtung: Es ist möglich, eine Variable AS ANY zu deklarieren. Bei der Zuweisung von Werten kann es allerdings zu Problemen kommen. DIM AS ANY sollte also nur bei der Reservierung eines Speicherbereichs verwendet werden; siehe ALLOCATE |
Sollte also gehen, aber ob das Intelligent ist?
Du willst doch irgendeinen Typen?
Vielleicht meinst du ANY PTR und imagecreate?
http://imagecreate.freebasic.de
SHARED ist ganz gefährlich wenn du es in eine .bi Datei tust!
Damit ist die Variable innerhalb der einzelnen Code Teile Global, aber nicht über alle.
(Schwer zu beschreiben)
Also die Variabel ist innerhalb der DLL's Global, aber nicht zwischen den DLL's.
(Was die eine Rein schreibt, bemerkt die andere nicht) _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 16:49 Titel: |
|
|
Das sagst du mir erst jetzt??? Jetzt muss ich alles umschreiben Logo! Alle, die die Standart.bi brauchen, bekommen eine! Müsste doch gehen, oder? Weisst du, wie du deinen Eintrag gepostet hat war winman schon online! (siehe Projektseite, ganz oben ist der Link!) Das macht mir nicht spaß das wieder rückgängig zu machen... Ich hoffe das funktioniert so...
Und das Projekt geht erst weiter, wenn ich eine PN bekommen habe, in der grünes Licht steht! Also ran an den 2. Teil! _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 07.05.2006, 17:10 Titel: |
|
|
Zitat: | Alle, die die Standart.bi brauchen, bekommen eine! Müsste doch gehen, oder? |
Versteh ich jetzt nicht.
Ich würde es so machen:
Ein Datetyp Verwaltung oder kurz VER
Code: | type ver
openedthread as integer ' Threads die laufen
killallthread as integer ' TRUE=Alle Threads schließen, FALSE=nichts.
whattokill as integer ' Handle des Threads zum schließen.
tempvar as integer ' Kann man für verschiedenes brauchen.
windowImage(1 to 100) as any ptr
end type |
Dann eine Variabel main als Ver
Und dann die jeder Subroutine und jeder Funktion BYREF als erstes Parameter übergeben. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 17:30 Titel: |
|
|
Kommt dann nicht das gleiche Problem? Ich versteh das nicht. In FB wird ja alles Standartmäßig ByRef übergeben... Eskommt dann ja das gleiche Problem, oder irre ich mich da? Ich müsste ja ALLES umändern.ALLES!!! Kannst du ja machen, auf der Projektseite ist alles was du brauchst. Aber nicht mit mir!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 07.05.2006, 17:54 Titel: |
|
|
Zitat: | In FB wird ja alles Standartmäßig ByRef übergeben... |
Sorry, hast recht.
Ich hab das was durch einander gebracht.
Zitat: | Kommt dann nicht das gleiche Problem? |
Nein, eben nicht weil die Variabeln ja beim Aufruf übergeben werden.
(bei der deiner Lösung legt sich das Main-Programm und jede einzelne DLL die Variabeln selbst an, und bis die, die du als Parameter übergibst, werden sie nicht abgelichen)
Lössen wir das Problem doch einfach:
Das System besteht nur aus einer einzigen .Bas Datei und fertig.
Dann kann man sich die ganzen Probleme mit .Bi Dateien, DLL's und Konsorten sparen.
Sorry, aber irgendwie sieht es so aus, als sei es das erste mal wo du .Bi und .DLL Datein anwendest.
Ich finde auch deine Aussage komisch, soll man dir solche Fehler erst dann sagen wenn sie Auftretten? _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 18:02 Titel: |
|
|
Ja das wirds sein... Mach ich... Zitat: | Sorry, aber irgendwie sieht es so aus, als sei es das erste mal wo du .Bi und .DLL Datein anwendest. |
Stimmung schlechter als der absolute Nullpunkt. Muss mich jetzt sehr zurückhalten damit mir nicht irgendetwas herrausrutscht... Glaube mir! Der Tag ohne Namen wird kommen!!!
Während sie dies lesen, programmiere ich eine Routine, die jedesmal wenn eine Taste gedrückt wird fragt: Sind sie sicher? oder Soll ich das Gegenteil machen? Danke für den guten Vorschlag! Hups... Da sind ja noch die beiden Pakete online... _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 07.05.2006, 19:15 Titel: |
|
|
@jb: Ja, sehr wohl. Siehe Trash-Thread im Off-Topic Forum, Seite 170. Und vergiss nicht Michael Freys Code Snippet zum Abblocken von Inputs einbauen. Echt.
Und danke für den Tip mit dem Mauscursorzittern! Ist schon drin...
Arbeit am 7. Mai beendet.
Neuer Tag, neues Glück... Oder nicht...
Hi! Heute ist ein s... Tag... Meine Pollenallergie... Ach ja, auf der Projektseite gibt's jetzt auch Credits! Ich poste ja nichts, ohne irgendwie ein Problem zu haben... Nein, ich hab wohl Asperin zu Hause . Wie kann ich den Textcursor an eine Pixelgenaue Position setzen? Brauch' Ich für die Labels. Ich hoffe es ist irgendwie möglich... _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
|
|