Visual Basic Code Includen

Darkhell

Erfahrenes Mitglied
Kann man wie bei PHP auch einen Code aus einer Datei includen lassen? Das soll Dazu dienen Variablen durch Inhalte einer Datei festzulegen. Wie ein Template theoretisch.

Es soll ungefähr so funktionieren:

Code:
Private Sub cmdTemplateLoad_Click()
Dim Variable1imTemplate As Boolean
Dim Variable2imTemplate As Boolean
Dim Variable3im Template As String
Include template.tmp
txtTest.ForeColor = Variable1imTemplate
txtTest.BackColor = Variable2imTemplate
txtTest.Font = Variable3imTemplate
End Sub

Ich hoffe ihr habt mich damit verstanden und wisst bescheid worauf ich hinaus möchte....
 
Zuletzt bearbeitet:
jain...
funktioniert allerdings nur in VB6!
du kannst in deinem Programm keine weitere EXE Includen allerdings kannst du mit der Funktion EbExecuteLine Code währen dein Programm läuft ausführen.

Code:
Private Declare Function EbExecuteLine Lib "vba6.dll" ( _
  ByVal StringToExec As Long, _
  ByVal Any1 As Long, _
  ByVal Any2 As Long, _
  ByVal CheckOnly As Long) As Long

Private Function VBExecute(VBCode As String) As Boolean
    VBExecute = (EbExecuteLine(StrPtr(VBCode), 0&, 0&, 0&) = 0)
End Function

jetzt kannst du den code z.B. aus einer TextBox(oder aus einer externen Datei) ausführen:
Code:
VBExecute "MsgBox " & Chr(34) & "hallo Welt" & Chr(34)

so hoff, das dir das da was bringt...
mfg
Jonas
 
Hallo Darkhell,
Du kannst mit dem Menü ‚Projekt/Modul hinzufügen’ -> Tab ‚Vorhanden’ ein VB-Modul in Dein Projekt einbinden. Alles was in diesem Modul als Public deklariert ist steht Dir dann zur Verfügung.
Der Inhalt von diesem Modul könnte z. B. so aussehen:

Code:
Option Explicit

Public Variable1imTemplate As Boolean
Public Variable2imTemplate As Boolean
Public Variable3imTemplate As String

Public Sub IniVariable()
  Variable1imTemplate = True
  Variable2imTemplate = False
  Variable3imTemplate = "Inhalt von Variable3imTemplate"
End Sub

Du musst nur die Sub IniVariable an geeigneter Stelle aufrufen (Form_Load() bietet sich da an).

Viel Erfolg
Walter Gutermann

Jetzt noch eine Bitte an Jonas.
Kennst Du eine Quelle in der ich eine Beschreibung der Function EbExecuteLine finden kann? Da scheinen sich ungeahnte Möglichkeiten aufzutun.
Im voraus Besten Dank.

Grüße
Walter
 
@WaGutSo nee ne Beschreibung kenn ich dazu nicht... hab des auch nur aus meinen Notizen noch gehabt aba wenn Probleme auftauchen sollten kannst du ja mal Fragen...
 
Nochmal kurz zu Function EbExecuteLine

Ich habe inzwischen erfahren, dass die Funktion nur in der Entwicklungsumgebung läuft. Das habe ich mit dem Beispiel von oben getestet. Dass es in einem kompilierten Programm nicht funktionieren kann ist eigentlich auch logisch. Der Inhalt von StringToExec müsste ja auch kompiliert werden.

Grüße
Walter Gutermann
 
jo da hast du wohl recht...
Mit der Funktion könnt ich ja eine Anwendung schreiben, die den Code aus einer externen Datei ausliest und diesen dann ausführt...
Man muss dann zwar einiges einbüßen, wenn man aber die EXE und die entsprechenden DLLs hat, dann kann man eigentlich komplett auf VB6 verzichten..
Ich bin mir sicher, dass so ein Progg bei Codern die nicht genug Geld für Visual Basic haben - speziell Schüler - extrem gut angekommen wär...
aber ich denk mal, dass des nicht im Interesse vom Billy und seinem Softwareteam wär
ich zum Glück hab mein VB6 geerbt^^ da musst ich recht wenig ausgeben...

kp ob des jetzt wirklich gewollt war aber des könnt ich mir gut vorstellen, dass Microsoft da nix herschenken möchte...

tut mir leid nochmal ... hab das auch erst jetzt erfahren, dass das nicht geht
mfg
Jonas

PS:
Dass es in einem kompilierten Programm nicht funktionieren kann ist eigentlich auch logisch. Der Inhalt von StringToExec müsste ja auch kompiliert werden.
dazu nochmal soweit ich weiß benutzt Visual Basic selbst die vba6.dll für den Run-Modus.
weil der Quelltext im Code-Fenster ist ja letztendlich auch ein String, der dann durch den klick auf den Run-Button ausgeführt wird....

ich werd aber noch ein bissl googeln weil des interessiert mich jetzt schon irgendwie
 
Zuletzt bearbeitet:
Hallo zusammen,

WaGutSo, deine Lösung kann aber auch nicht im kompilierten modus funktionieren. Ich wollte die Sachen aus einem template (einer Datei) holen und dann includen und zum funktionieren bringen.
 
also ich hab nochmal deine Frage durchgelesen... also ich hab mich bisher ausschließlich auf
Kann man wie bei PHP auch einen Code aus einer Datei includen lassen?
bezogen...

aber von dem "Code-Includen" mal abgesehn würde es dein Problem auch lößen, wenn du in einer INI-Datei alle Attribute wie die Hintergrundfarbe von deiner Textbox speicherst?
da Link

Jonas
 
Zuletzt bearbeitet:
Hallo,

ich habe wohl etwas nicht richtig verstanden da ich PHP nicht kenne.
Ich bin davon ausgegangen, dass durch die Programmzeile Include template.tmp der Kompiler angewiesen wird die Datei template.tmp einzubinden und im Bedarfsfall zu kompilieren. Nichts anderes geschieht bei meinem Vorschlag, nur nicht durch eine Kompiler-Anweisung sondern durch ein paar Mausklick und wenn Variable initiiert werden müssen durch Aufruf der entsprechenden Prozedur. Ich praktiziere diese Methode schon lange mit meiner Sammlung von verschiedene, immer wieder benötigten Funktionen und Konstanten.

Grüße
Walter Gutermann
 
Zurück