Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
noname_
Tutorial Leser
Tutorial Leser

Anmeldedatum: 17.01.2008
Beiträge: 29

ZiG's Buildertutorial (VB6 zu VB.Net)
Verfasst am: 18.01.2008, 22:15

Folgendes,

ich interessieren mich für das programmieren von einem builder und habe das
Tutorial von ZiG gefunden. Da es in VB6 geschrieben ist dacht ich mir das ich
es mal eben umschreiben könnte, weil es relativ simpel aufgebaut ist. Doch
irgendwie hat mich mein glück verlassen und ich habe an allen ecken und
enden probleme. Ich werde hier, wie ZiG es schon gemacht hat, jeden schritt
einzeln schreiben und meine probleme dokumentieren.

Jedem soll gesagt sein, das ich KEINEN fertigen sourcecode will!

Ich werde hier die Stub methode benutzen.

Als erstes das deklarieren des Strings:

Code:
Dim options As New VB6.FixedLengthString(100)


Ich muss diese Variante nehmen da * 100 bei .Net nich funktioniert.

Nun weisen wir dem String etwas zu, hier ist es (wie im tutorial) textbox1 und Textbox2.

Code:
options.Value = TextBox1.Text & "#" & TextBox2.Text & "#"

Hier musste ich .Value anhängen, da ich options sonst keinen text zuweisen konnte.

Jetzt hängen wir die informationen an die Stub an.


Code:

        FileOpen(1, (My.Application.Info.DirectoryPath & "\stub.exe"), OpenMode.Binary)
        FilePutObject(1, options.Value, LOF(1) + 1)
        FileClose(1)


Soweit ich weiss, funktioniert das anhängen.


Nun das auslesen:

Als erstes deklarieren wir auch wieder in der Stub die variablen.

Code:

    Dim cmd() As String
    Dim options As New VB6.FixedLengthString(100)


Nun wirds interessant:

Ich lese auf diese methode das ende der Stub.

Code:

FileOpen(1, ("stub.exe"), OpenMode.Binary)
        FileGetObject(1, options.Value, LOF(1) - 99)
        FileClose(1)
cmd() = Split(options, "#")


Hier bekommen wir die fehlermeldung: Die Datei wird von einem anderen Prozess verwendet...

Also kopieren wir die Stub vorher in eine zweite datei, die nicht in benutzung ist.

Code:

IO.File.Copy("stub.exe", "stub2.exe")


Jetzt lesen wir wieder aus.


Code:

FileOpen(1, ("stub2.exe"), OpenMode.Binary)
        FileGetObject(1, options.Value, LOF(1) - 99)
        FileClose(1)
cmd() = Split(options, "#")


Hier bekommen wir wieder eine Fehlermeldung: Die Variable verwendet
einen Automatisierungtyp, der von Visual Basic nicht unterstützt wird.

Hier komme ich nicht weiter.

Ich hoffe ihr könnt mir helfen.
Vielen dank schonmal.
 
Marduk_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 17.06.2007
Beiträge: 389


Verfasst am: 05.02.2008, 21:38

Versuch doch mal mit der IO-Klasse zu arbeiten, ist imo leichter mit zu arbeiten als mit dem VB6 Style.
Sprich mit dem filestream die stub in einem Puffer laden, die Daten einfügen. Und das ganze wieder in eine neue Datei schreiben.

Ich hab es auch schon mal probiert, funktionierte aber nicht allzugut. kA ob man wegen dem CLR-Code die Daten nicht ans Ende dranhängen darf, sondern in einen "Whitespace" einfügen muss. Rolling Eyes
 
noname_
Tutorial Leser
Tutorial Leser

Anmeldedatum: 17.01.2008
Beiträge: 29


Verfasst am: 07.02.2008, 16:24

Problem gelöst ( Mit der VB6 Methode Very Happy)

Builder:

Code:
Imports System.Runtime.InteropServices
Public Class Form1
    Dim options As New VB6.FixedLengthString(100)
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        options.Value = TextBox1.Text & "#" & TextBox2.Text & "#"
        FileOpen(1, (My.Application.Info.DirectoryPath & "\stub.exe"), OpenMode.Binary)
        FilePutObject(1, options.Value, LOF(1) + 1)
        FileClose(1)
    End Sub
End Class


Stub:

Code:
Public Class Form1
    Dim file As String
    Dim cmd() As String
    Dim options As New VB6.FixedLengthString(100)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = cmd(0)
        TextBox2.Text = cmd(1)
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        IO.File.Copy("stub.exe", "stub2.exe")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        FileOpen(1, ("stub2.exe"), OpenMode.Binary)
        FileGet(1, options.Value, LOF(1) - 99)
        FileClose(1)
        cmd = options.Value.Split("#")
        IO.File.Delete("Stub2.exe")
    End Sub
End Class


Damit der VB6 Namespace integriert wird, lasst euch einfach vom Codeübersetzer folgendes übersetzen:

Code:
Dim options As String * 100


Ihr könnt dies danach wieder löschen.
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: visual basic, builder, tutorial, stub, fileopen

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge [suche] Tuturials winsock & daten senden 985 09.06.2011, 13:19
Keine neuen Beiträge [Video] *.dll & *.ocx Installer 2613 06.03.2008, 21:19
Keine neuen Beiträge ListView speichern & laden 1332 05.08.2008, 13:32
Keine neuen Beiträge Registry & Co Fragen 1207 03.05.2007, 10:57
Keine neuen Beiträge Listbox speichern & laden 2274 22.03.2007, 21:25
 


[ Time: 0.0783s ][ Queries: 86 (0.0325s) ][ GZIP on - Debug on ]