Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The real Agent D
Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 17.03.2006, 14:48 Titel: $INCLUDE Dateien |
|
|
Hi,
ich will ein programm proggen, das Variablen mit dem inhalt einer $INCLUDE Datei Werte zuweist, während ein anderes Programm den Innhalt der Datei umschreibt . Wie ist das jetzt, wenn ich das Programm zu einer exe compilliere, greift dann die exe auf die include Datei zu, oder wird deren Innhalt unveränderlich in exe eingefügt?
Ich wollte einfach nicht die trial and error Methode verwenden, da ich bevor ich zu proggen beginne eine fixe Antwort brauche . |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 17.03.2006, 14:51 Titel: |
|
|
geht nicht. nach dem kompilieren sind sämtliche Variablennamen hinfällig, die kannst du also nicht mehr benutzen. bei QB geht das, in FB nicht und in QB auch nur, wenn du das programm im interpreter laufen lässt. Die Variablen in einer .exe zu ändern ist selbstmord auch wenn es mit viel aufwand möglich ist.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 17.03.2006, 17:28 Titel: |
|
|
Möglich wäre aber eine kleine DLL die ien Sub enthält die BYREF die Variabeln bekommt und überschreibt.
Einfacher gesagt:
Du schreibt eine Sub-Routine, die nur Werte setzt und packst diese in eine DLL.
Das Hauptprogramm öffnet nun die DLL und hat nun die Daten.
Alernativ übergibst du die Variabeln/Inhalt per Parameter an dein Programm. |
|
Nach oben |
|
|
The real Agent D
Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 19.03.2006, 15:18 Titel: |
|
|
Wie schreibe ich diese DLL und wie greife ich darauf zu? |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 19.03.2006, 15:43 Titel: |
|
|
Eine DLL ist eigentlich ein ganz Normals Programm, das aber nur aus Sub Routinen/Funktionen besteht.
Freebasic erzeugt eine DLL, wenn man das Parameter "-dylib" übergibt.
fbc hat Folgendes geschrieben: | -dylib Create a DLL, including the import library |
aufgerufen wird DLL hier mit:
Code: | declare function NameDerFunction lib "NameDerDLL" alias NameDerFunction (Parameter) as integer |
oder
Code: | declare Sub NameDerSub lib "NameDerDLL" alias NameDerSub (Parameter) |
Nach her kannst du die Subroutinie/Fuinktion ganz Normal benutzen.
siehe auch im Freebasic Ordner:
FreeBASIC\examples\dll\
Edit:/
Der Benutzer braucht dann zum verändern der Werte einfach Freebasic und auch das geht nicht während laufzeit, sondern nur vordem starten.
Wenn ich dich jetzt richtig verstehe, willst du das zwei Programm irgendwie Daten austauschen, dafür gäbe es bessere Mittel.
z.B. die Zwischenablage von Windows
oder eine Text Datei die das eine Programm schreibt und das andere liest. (dann muss man aber aufpassen, das die Datei nicht im falschen moment gelesen wird) |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 19.03.2006, 17:47 Titel: |
|
|
Das stimmt, aber "$INCLUDE" ist doch ein Freebasic Befehl? |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 19.03.2006, 17:52 Titel: |
|
|
'$include 'bla.bi'
#include "bla.bi"
geht beides. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 19.03.2006, 18:30 Titel: |
|
|
QuickBASIC's Hilfe hat Folgendes geschrieben: |
$INCLUDE - $INCLUDE ist ein Metabefehl, der QuickBASIC veranlasst, andere BASIC Quelldateien an spezifizierten Punkten während der Kompilation einzulesen und zu kompilieren.
Syntax:
REM $INCLUDE: 'Dateispez'
oder
' $INCLUDE: 'Dateispez'
Siehe auch ->Metabefehl Syntax<-
|
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 19.03.2006, 18:56 Titel: |
|
|
öhm stimmt wir sind ja im QB-Forum, in FreeBASIC geht beides, in QB geht _nur_ '$include 'bla.bi' _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 19.03.2006, 18:59 Titel: |
|
|
na gut
wer benutzt schon QB oder '$ in FB *pfeif* _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
The real Agent D
Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 19.03.2006, 19:02 Titel: |
|
|
Ich versuch einfach mal eine Datei zu schreiben, in der Zahlen stehen, die mein Programm einließt und Variablen zu weist. Während das andere Programm den Innhalt löscht und neu schreibt. |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 19.03.2006, 19:05 Titel: |
|
|
So lange du interpretierst geht das auch. Nur als .EXE wird's nicht laufen...
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
The real Agent D
Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 19.03.2006, 19:09 Titel: |
|
|
Warum nicht? Und wie soll es dann laufen? |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 19.03.2006, 19:18 Titel: |
|
|
Wenn ein Programm, das ein $inc verwendet, kompiliert wird, dann wird an der Stelle, an der
das $inc vorkommt, der enthaltene Quellcode direkt mitkompiliert. Da zum Kompilieren
allerdings QB.EXE benötigt wird, kann die erzeugte .EXE nicht einfach selber den includierten
Code compilieren. Ein
Code: |
IF x = 1 THEN '$INCLUDE: 'BLA.BI'
|
wäre also auch nicht möglich.
Das ist das Problem.
Wenn es dir nur um Variablen geht, könntest du dir einfach ein eigenes Variablensystem
basteln, das die Werte der Variablen in temporäre Dateien schreibt.
Eine andere sicherlich komplexere Möglichkeit wäre, dir eine eigene Scriptsprache zu
schreiben, dessen Scripte deine kompilierte .EXE dann selber während der Laufzeit interpretiert...
Vielleicht erklärst du mal, worum genau es dir geht, denn vielleicht gibt es auch eine viel einfachere Lösung für dein Problem
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
The real Agent D
Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 20.03.2006, 14:37 Titel: |
|
|
jb hat Folgendes geschrieben: |
Wenn es dir nur um Variablen geht, könntest du dir einfach ein eigenes Variablensystem
basteln, das die Werte der Variablen in temporäre Dateien schreibt.
|
Genau das habe ich auch gesagt.
The real Agent D hat Folgendes geschrieben: |
Ich versuch einfach mal eine Datei zu schreiben, in der Zahlen stehen, die mein Programm einließt und Variablen zu weist. Während das andere Programm den Innhalt löscht und neu schreibt.
|
|
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
|
|