PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB.NET] Problem mit Builder



eatsen
16.03.2009, 19:27
Hallo, ich habe ein komisches Problem:

ich habe einen builder, da funktioniert eigentlich alles gut, b is auf eine Sache
Wenn ich in verschiedene Textboxen etwas längeres eingebe, das dann an die stub übergeben wird (etwa um die 20 Zeichen) kommt beim ausführen des servers "Index war ausserhalb des ArrayBereiches"
Ersetze ich aber alles mit weniger zeichen, z.B "1" geht alles Super! Aber das nützt mir nichts!

An was kann das liegen?!

Danke im voraus, hoffe auf hilfe!

resartg
16.03.2009, 20:26
Hmmm, also wenn ich in der Schule damals richtig aufgepasst habe, musst du eigentlich nur das Array größer machen, aber alle Angaben ohne Gewähr, denn der Stoff is bei mir vor 1 Jahr rechts rein links raus geflogen....

stangand
16.03.2009, 23:56
Hehe, mein erster post hier :D

Ich hab das selbe problem, es einfach größer zu machen scheint net zu gehen...

Sawyer
17.03.2009, 00:03
Hallo, ich habe ein komisches Problem:

ich habe einen builder, da funktioniert eigentlich alles gut, b is auf eine Sache
Wenn ich in verschiedene Textboxen etwas längeres eingebe, das dann an die stub übergeben wird (etwa um die 20 Zeichen) kommt beim ausführen des servers "Index war ausserhalb des ArrayBereiches"
Ersetze ich aber alles mit weniger zeichen, z.B "1" geht alles Super! Aber das nützt mir nichts!

An was kann das liegen?!

Danke im voraus, hoffe auf hilfe!

also das kann wie resartg schon sagte nur am string liegen der übergeben wird

da es ein fixed string ist (also eine vordefinierte länge hat) muss die Länge natürlich auch in der stub angepasst werden , das dann ein index error entsteht , ist natürlich eine logische Schlussfolgerung

MfG

eatsen
17.03.2009, 00:38
also das kann wie resartg schon sagte nur am string liegen der übergeben wird

da es ein fixed string ist (also eine vordefinierte länge hat) muss die Länge natürlich auch in der stub angepasst werden , das dann ein index error entsteht , ist natürlich eine logische Schlussfolgerung

MfG

Mhm, also in diesen Themen bin ich schwach, kann mir da jemand ein beispiel machen wie ich das realisieren kann? Ich blick da nicht ganz durch, hab jetzt im internet danach gesucht, bin zwar fündig geworden, aber ich peils nicht :(

Edit:

Ok, habs hingekriegt! danke vielmals! :D

stangand
17.03.2009, 17:39
Bei mir gehts immernoch nicht...

Lass ich Compatibility.VB6.FixedLengthString() bei beiden auf 100 gehts, aber läst nichts langes zu. Setze ich es z.B bei beiden auf 1000 (oder auch nur 500) geht weder etwas kurzes ("1") noch längeres nicht mehr.

Ist dein builder Beispiel ThePapst
Builder:

Public Class frmMain

' Builder Sample - by The Papst
' 28-09-08
' Sample for Gumball & free-hack.com

Dim VB6setting As New Compatibility.VB6.FixedLengthString(1000)

Private Sub cmdErstellen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdErstellen.Click
' Öffne CommonDialog
SaveFileDialog1.ShowDialog()

' Übergebe die einzelnen Builder einstellungen an die definierten String,s
Dim FTPString As String = txtFTP.Text
Dim Name As String = txtName.Text
Dim Password As String = txtPass.Text

' Builder-Stub an eine Variable übergeben | .exe würde auch gehen , in meinem fall wähle ich ein eigenes format (.bp = builder projekt)
Dim BuilderStub As String = My.Application.Info.DirectoryPath & "\Stub\Stub.bp"
' Erstelle eine Copy von der Stub die im CommonDialog gewählten ordner
IO.File.Copy(BuilderStub, SaveFileDialog1.FileName)

'speichere die einstellungen ab ( "+~*" ist das splitzeichen )
'um die einzelnen optionen , in der stub wieder voneinadner zu trennen
VB6setting.Value = FTPString & "~" & Name & "~" & Password

' Öffne Die Builder Stub und hänge die Informationen an
' danch wird die Datei wieder geschlossen
FileOpen(1, (SaveFileDialog1.FileName), OpenMode.Binary)
FilePutObject(1, VB6setting.Value, LOF(1) + 1)
FileClose(1)

' Nachdem die Datei erstellt wurde , geben wir noch eine MessageBox aus
' Um den Benutzer darüber zu Informieren , das der Buildforgang
' Erfolgreich abgeschlossen wurde!

MsgBox("Die Datei wurde erfolgreich erstellt!", MsgBoxStyle.Information, "Builder Sample - by ThePapst")

End Sub

End Class

Stub:


Public Class fixedTestStub


' Builder Sample - by The Papst
' 28-09-08
' Sample for Gumball & free-hack.com

Dim Befehle() As String
Dim VB6setting As New Compatibility.VB6.FixedLengthString(1000)
Private Sub fixedTestCompiler_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Definiert die Stub als variable
' der zielpfad ist natürlich die datei selbst , um zu ermitteln wie die datei selber heißt
' wählen wir zuerst das application Directory und benutzen dann den befehl
' My.Application.Info.AssemblyName = gibt den eigentlichen exe namen aus
Dim Stub As String = Application.ExecutablePath
Dim file2 As String = Stub.Substring(0, Stub.IndexOf(".")) & "bp.exe"

' Öffne die datei und Lese die angehanggenen Informationen aus
IO.File.Copy(Stub, file2)
FileOpen(1, (file2), OpenMode.Binary)
' Ermittle informationen
FileGet(1, VB6setting.Value, LOF(1) - 99)
' Schließe Die datei
FileClose(1)

' Zerlege den Kompletten String , in die einzelnen Optionen
' Split zeichen muss bei Builder und Stub gleich sein!
Befehle = VB6setting.Value.Split("~")
' Lösche Die DateiKopie
IO.File.Delete(file2)

' Übergebe die Zerlegten Informationen an variablen
Dim FTP As String = Befehle(0)
Dim Name As String = Befehle(1)
Dim Password As String = Befehle(2)

' Gebe zum Test (zum überprüfen ob alle Informationen Korrekt übergeben wurden)
' Eine Message Box aus

MsgBox("FTP: " & FTP & ControlChars.CrLf & "Name: " & Name & ControlChars.CrLf & "Passwort: " & Password, MsgBoxStyle.Information, "Server Builder - Stub")

' Schliesse die Anwendung
Me.Close()
End Sub
End Class

Sawyer
17.03.2009, 17:45
FileGet(1, VB6setting.Value, LOF(1) - 99)

Schau dir mal diese Zeile an , die muss du natürlich anpassen , also in deinem Fall - 999 ;)

MfG

stangand
17.03.2009, 17:55
Kompletter Quote des Vorposters entfernt - H4x0r007


Ach, mann bin ich doof... is mir garnet aufgefallen...
Danke! Jetzt gehts :D