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:

The (un)perfect Operating System

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



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 15:43    Titel: The (un)perfect Operating System Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.05.2006, 16:00    Titel: Antworten mit Zitat

Kannst du den ganzen Code inklusive Standart.bi Posten?
Ich blick da noch nicht durch.

PS: Deine PM habe ich erhalten.
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 16:06    Titel: Antworten mit Zitat

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 geschockt . Weiter bin ich noch nicht, als nächstes wird wieder Mist gebaut: Die Threads und Steuerelemente grinsen . Nur, dass irs wisst.
_________________
Zitat:
1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.05.2006, 16:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 16:20    Titel: Antworten mit Zitat

Ä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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.05.2006, 16:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 16:33    Titel: Antworten mit Zitat

Ä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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.05.2006, 16:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 16:49    Titel: Antworten mit Zitat

Das sagst du mir erst jetzt??? weinen Jetzt muss ich alles umschreiben weinen geschockt 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... mit dem Kopf durch die Mauer wollen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.05.2006, 17:10    Titel: Antworten mit Zitat

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
Code:
Dim main as 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 17:30    Titel: Antworten mit Zitat

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!!! böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse böse Kannst du ja machen, auf der Projektseite ist alles was du brauchst. Aber nicht mit mir!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! böse böse böse böse böse böse böse böse böse böse böse böse
_________________
Zitat:
1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.05.2006, 17:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 18:02    Titel: Antworten mit Zitat

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... böse böse böse böse böse böse 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 07.05.2006, 18:52    Titel: Antworten mit Zitat

Ähm geht's noch? peinlich

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 07.05.2006, 19:15    Titel: Antworten mit Zitat

@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. happy

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... durchgeknallt 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 happy . 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen 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