 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
pepper-jk
Anmeldungsdatum: 08.07.2009 Beiträge: 33
|
Verfasst am: 31.07.2009, 07:36 Titel: FreeBASIC TO VisualBASIC |
|
|
Hallo alle zusammen,
ich habe ein kleines Problem. Ich denk mal, dass das hier nicht mal rein gehört, aber okay:
Ich habe ein Programm in FB geschrieben und da die darstellung von Grafik mit FB relativ aufwendig ist möchte ich dies mit VB (VisualBASIC) "nachprogrammieren", weil ich grafische Eingaben damit leichter machen kann (hab ich gehört, wenn ihr also eine andere Lösung habt nehme ich dir auch gerne an).
Mein Programm:
Code: | ''Deklarieren von Variablen und Array's
Dim As Integer x, y, prozInt, pno, n, e, lineamount, i
Dim As String drive, proZahl, Zeile, arg, user, password, usrright, groupright, folder, pnr, group, inputoption, userp(0 To 4), over, filetxt, newline, inline(1 To lineamount),echo
''Farbe Grün
Color 2
''Angabe des Programmierers
Print "produced by Jens Keim_Praktikum+Ferienjob_Mannheim_Alstom_2009"
Print
''''''''''
''Config''
''''''''''
''Config.txt öffnen
Shell "if not exist " & Chr(34) & "config.txt" & Chr(34) & " echo Config: Error(NotExist!)"
Open "config.txt" For Input As #1
x=1
''aus Config.txt auslesen ...
''... - Laufwerk
Do Until EOF(1)
Line Input #1, zeile
If InStr(zeile, "drive=") <> 0 Then
drive=Right(zeile,Len(zeile)-InStr(zeile, "="))
Else
x=x+1
If x > 20 Then
Print "Config: Error(drive)"
End If
End If
Loop
Close #1
''... - Projekt Anzahl
Open "config.txt" For Input As #1
y=1
Do Until EOF(1)
Line Input #1, zeile
If InStr(zeile, "projectAmount=") <> 0 Then
proZahl=Right(zeile,Len(zeile)-InStr(zeile, "="))
Else
y=y+1
If y > 20 Then
Print "Config: Error(projectAmount)"
End If
End If
Loop
Close #1
''''''''''
''Option''
''''''''''
''Eingabe der Option
e=2
Do Until e=0
Input "option (txt or manual): ", inputoption
''txt-Option
If inputoption = "txt" Then
''txtfile Input
Print
Input ".txt-file : ", filetxt
Shell "if not exist " & filetxt & " then echo Input: Error(txt)"
Open filetxt For Input As #1
Do Until EOF(1)
Line Input #1, zeile
''erste Zeile (/Musterzeile) überspringen ...
If InStr(zeile, "[user;password;right;folder;projectnumber;:]") <> 0 Then
''...und dann jede Zeile einlesen
Else
n=0
For i = 1 To Len(zeile)
If Mid(zeile, i, 1) = ";" Then
userp(n)=over
n=n+1
over=""
ElseIf Mid(zeile, i, 1) = ":" Then
i=Len(zeile)
Else
over = over + Mid(zeile, i, 1)
EndIf
Next i
''Var.-übergabe
user=userp(0)
password=userp(1)
usrright=userp(2)
folder=userp(3)
pno=ValInt(userp(4))
''''''''''''
''Programm''
''''''''''''
''Eingabe in txt schreiben
Open "backupList.bat" For Output As #1
echo = "echo " & user & ";" & password & ";" & usrright & ";" & folder & ";" & pno & ";:>>backupList.txt"
Print #1, echo
Close #1
Shell "start /wait backupList.bat"
''Rechteeingabe überprüfen und neue Var für Gruppenname erstellen
If usrright="M" Then
groupright="LRWM"
ElseIf usrright="W" Then
groupright="LRW"
ElseIf usrright="R" Then
groupright="LR"
ElseIf usrright="L" Then
groupright="L"
Else
Print "Input: Error(right)"
Print "Please try again:"
Input "right : ", usrright
EndIf
''Projektnummer überprüfen
prozInt=ValInt(proZahl)
If pno < prozInt Then
Print "projectnumber=", pno
ElseIf pno > prozInt Then
Do Until pno < prozInt
Print "Input: Error(projectnumber)!"
Print "Please try again:"
Input "projectnumber : ", pno
Loop
EndIf
''Var.-übergabe
pnr = Str(pno)
group = "P" & pnr & folder & groupright
'''''''''''''''''''
''Ur Batch Script''
'''''''''''''''''''
''User add / group add / usw.
Print "net user " & user & " " & password & " /add /comment:" & Chr(34) & "ftpuserProject" & pnr & Chr(34)
Shell "net user " & user & " " & password & " /add /comment:" & Chr(34) & "ftpuserProject" & pnr & Chr(34)
Print "net localgroup " & group & " /add /comment:" & Chr(34) & "project"& pno & "/" & folder & "_" & groupright & Chr(34)
Shell "net localgroup " & group & " /add /comment:" & Chr(34) & "project"& pno & "/" & folder & "_" & groupright & Chr(34)
Print "net localgroup " & group & " " & user & " /add"
Shell "net localgroup " & group & " " & user & " /add"
Print "net localgroup ftp-rootlrx " & user & " /add"
Shell "net localgroup ftp-rootlrx " & user & " /add"
Print "net localgroup users " & user & " /del"
Shell "net localgroup users " & user & " /del"
Print "net localgroup benutzer " & user & " /del"
Shell "net localgroup benutzer " & user & " /del"
''Ordner
Print "if not exist " & drive & "\ftproot\project" & pnr & "\" & folder & " md " & drive & "\ftproot\project" & pnr & "\" & folder
Shell "if not exist " & drive & "\ftproot\project" & pnr & "\" & folder & " md " & drive & "\ftproot\project" & pnr & "\" & folder
''Rechtevergabe
If usrright="M" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRWM:C"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRWM:C"
ElseIf usrright="W" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRW:RWx"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRW:RWx"
ElseIf usrright="R" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LR:RX"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LR:RX"
ElseIf usrright="L" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "L:C:FO"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "L:C:FO"
EndIf
e=e-2
End If
Loop
Close #1
''manuelle Eingabe
ElseIf inputoption = "manual" Then
'''''''''''''''
''ManualInput''
'''''''''''''''
''Eingabe und Var's festlegen
Input "username : ", user
Input "password : ", password
Input "right : ", usrright
Input "folder : ", folder
Input "projectnumber : ", pno
''''''''''''
''Programm''
''''''''''''
''Eingabe in txt schreiben
Open "backupList.bat" For Output As #1
echo = "echo " & user & ";" & password & ";" & usrright & ";" & folder & ";" & pno & ";:>>backupList.txt"
Print #1, echo
Close #1
Shell "start /wait backupList.bat"
''Rechteeingabe überprüfen und neue Var für Gruppenname erstellen
If usrright="M" Then
groupright="LRWM"
ElseIf usrright="W" Then
groupright="LRW"
ElseIf usrright="R" Then
groupright="LR"
ElseIf usrright="L" Then
groupright="L"
Else
Print "Input: Error(right)"
Print "Please try again:"
Input "right : ", usrright
EndIf
''Projektnummer überprüfen
prozInt=ValInt(proZahl)
If pno < prozInt Then
Print "projectnumber=", pno
ElseIf pno > prozInt Then
Do Until pno < prozInt
Print "Input: Error(projectnumber)!"
Print "Please try again:"
Input "projectnumber : ", pno
Loop
EndIf
''Var.-übergabe
pnr = Str(pno)
group = "P" & pnr & folder & groupright
'''''''''''''''''''
''Ur Batch Script''
'''''''''''''''''''
''User add / group add / usw.
Print "net user " & user & " " & password & " /add /comment:" & Chr(34) & "ftpuserProject" & pnr & Chr(34)
Shell "net user " & user & " " & password & " /add /comment:" & Chr(34) & "ftpuserProject" & pnr & Chr(34)
Print "net localgroup " & group & " /add /comment:" & Chr(34) & "project"& pno & "/" & folder & "_" & groupright & Chr(34)
Shell "net localgroup " & group & " /add /comment:" & Chr(34) & "project"& pno & "/" & folder & "_" & groupright & Chr(34)
Print "net localgroup " & group & " " & user & " /add"
Shell "net localgroup " & group & " " & user & " /add"
Print "net localgroup ftp-rootlrx " & user & " /add"
Shell "net localgroup ftp-rootlrx " & user & " /add"
Print "net localgroup users " & user & " /del"
Shell "net localgroup users " & user & " /del"
Print "net localgroup benutzer " & user & " /del"
Shell "net localgroup benutzer " & user & " /del"
''Ordner
Print "if not exist " & drive & "\ftproot\project" & pnr & "\" & folder & " md " & drive & "\ftproot\project" & pnr & "\" & folder
Shell "if not exist " & drive & "\ftproot\project" & pnr & "\" & folder & " md " & drive & "\ftproot\project" & pnr & "\" & folder
''Rechtevergabe
If usrright="M" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRWM:C"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRWM:C"
ElseIf usrright="W" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRW:RWx"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LRW:RWx"
ElseIf usrright="R" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LR:RX"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "LR:RX"
ElseIf usrright="L" Then
Print "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "L:C:FO"
Shell "FILEACL D:\ftproot\project" & pnr & "\" & folder & " /S P" & pnr & folder & "L:C:FO"
EndIf
e=e-2
Else
''option Error
Print "Option: Error(NotExist)"
EndIf
Loop
Sleep
|
MfG pepper-jk |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 31.07.2009, 08:24 Titel: |
|
|
Wenn du grafisch arbeitest, udn das ganze etwasflotter sein soll, dann ist es egal ob du mit FB oder VB arbeitest.
Willst du jedoch kompfortabel Steuerelemente hinzufügen, auf einem Fenster, dann bist bei VB eigentlich gut aufgehoben. Dein Prog sieht aber eher nach regulären Grafiken aus.
Da wird sich nichts geben, bis auf den Geschwindigkeitsvorteil von FB.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
pepper-jk
Anmeldungsdatum: 08.07.2009 Beiträge: 33
|
Verfasst am: 31.07.2009, 09:40 Titel: |
|
|
Ja also die steurungselemente sind der grund wieso ich VB nehmen will.
ich hab auch schon den ganzen input fertig also des "inputoption" "user" usw
aber meine frage ist jetzt wie muss ich den quelltext der eigentlichen datei ändern um ihn in VB zu bekommen.
thx
MfG pepper-jk |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 31.07.2009, 09:52 Titel: |
|
|
Im grunde kannst ihn komplet übernehmen.
Copier es einfach in ein Modul oder ne form.
Ändern musst du alle Shared Variablen. Sie müssen in VB als Global, Public, bzw. Private deklariert werden. Je nachdem, wie weit sie verfügbar sein soll.
Dann einfach mal ausführen. VB mäckert regulär jeden fehler an. Ansonsten mit STRG + F5
Du kannst auch in der VB IDE in den optionen bei den Fehler-Optionen "Bei jedem Fehler" wählen. Dann mäckert die IDE jeden fehler an, der nicht so optimal is.
Ideal wäre auch der hacken "Option Explicite" bzw. "Variablendeklaration erzwingen" in den Optionen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
pepper-jk
Anmeldungsdatum: 08.07.2009 Beiträge: 33
|
Verfasst am: 31.07.2009, 09:57 Titel: |
|
|
also ich habe jetzt nur den config teil eingefügt:
Code: | ''''''''''
''Config''
''''''''''
''Config.txt öffnen
Shell "if not exist " & Chr(34) & "config.txt" & Chr(34) & " echo Config: Error(NotExist!)"
Open "config.txt" For Input As #1
x=1
''aus Config.txt auslesen ...
''... - Laufwerk
Do Until EOF(1)
Line Input #1, zeile
If InStr(zeile, "drive=") <> 0 Then
drive=Right(zeile,Len(zeile)-InStr(zeile, "="))
Else
x=x+1
If x > 20 Then
Print "Config: Error(drive)"
End If
End If
Loop
Close #1
''... - Projekt Anzahl
Open "config.txt" For Input As #1
y=1
Do Until EOF(1)
Line Input #1, zeile
If InStr(zeile, "projectAmount=") <> 0 Then
proZahl=Right(zeile,Len(zeile)-InStr(zeile, "="))
Else
y=y+1
If y > 20 Then
Print "Config: Error(projectAmount)"
End If
End If
Loop
Close #1 |
und er mäkert bei jedem FB befehl von wegen deklarieren oder so
weißt du was ich falsch mach?
___edit:
korrektur ermälert nur am datei öffnen und schließen rum
MfG pepper-jk |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 31.07.2009, 10:37 Titel: |
|
|
Also .. erstmal, VB ist Objektorientiert. Das heist, das du nicht einfach so Quellcode in ein Modul oder eien Form packen kannst.
VB benutzt 2 möglichkeiten des Programm-beginn's. Einmal über das "Init" und einmal über die "Sub Main()".
Es ist also nötig, das du den Quellcode in eine Sub oder Funtkion verpackst, udn diese über die Sub Main aufrufst, oder über das Init der ersten form ausführst.
Erzeuge ein neues Projekt, öffne die Form1, doppelklicke in die Form, und du erhälst ein Codefenster mit "Sub Form1.Load()" oder so
Dort kanste dann deinen Code rein packen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
pepper-jk
Anmeldungsdatum: 08.07.2009 Beiträge: 33
|
Verfasst am: 31.07.2009, 10:46 Titel: |
|
|
code befindet sich in einem sub(so siehts zumindest aus *keinen peil haben*
komplettercode folgt:
Code: | Public Class Form1
Dim drive, proZahl, Zeile, arg, user, password, usrright, groupright, folder, pnr, group, inputoption, userp(0 To 4), over, filetxt, newline, inline(0 To lineamount), echo As String
Dim x, y, prozInt, pno, n, e, lineamount, i As Integer
Private Sub optionINPUT_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles optionINPUT.SelectedIndexChanged
If optionINPUT.SelectedIndex = 0 Then
inputoption = "txt"
userINPUT.Enabled = False
passwordINPUT.Enabled = False
rightINPUT.Enabled = False
folderINPUT.Enabled = False
pnoINPUT.Enabled = False
ElseIf optionINPUT.SelectedIndex = 1 Then
inputoption = "manual"
txtINPUT.Enabled = False
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
''''''''''
''Config''
''''''''''
''Config.txt öffnen
Shell("if not exist " & Chr(34) & "config.txt" & Chr(34) & " echo Config: Error(NotExist!)")
Open ("config.txt" For Input As #1)
x = 1
''aus Config.txt auslesen ...
''... - Laufwerk
Do Until EOF(1)
LineInput #1, zeile
If InStr(Zeile, "drive=") <> 0 Then
drive = Right(Zeile, Len(Zeile) - InStr(Zeile, "="))
Else
x = x + 1
If x > 20 Then
Print("Config: Error(drive)")
End If
End If
Loop
Close #1
''... - Projekt Anzahl
Open "config.txt" For Input As #1
y = 1
Do Until EOF(1)
LineInput #1, zeile
If InStr(Zeile, "projectAmount=") <> 0 Then
proZahl = Right(Zeile, Len(Zeile) - InStr(Zeile, "="))
Else
y = y + 1
If y > 20 Then
Print("Config: Error(projectAmount)")
End If
End If
Loop
Close #1
inputoption = optionINPUT.SelectedIndex
user = userINPUT.Text
password = passwordINPUT.Text
usrright = rightINPUT.Text
folder = folderINPUT.Text
pno = pnoINPUT.Text
End Sub
End Class
|
MfG pepper-jk |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 31.07.2009, 11:46 Titel: |
|
|
Was fürn VB is das? .NET? Wenn ja, dann sry. da kann ich dir nicht helfen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
pepper-jk
Anmeldungsdatum: 08.07.2009 Beiträge: 33
|
Verfasst am: 31.07.2009, 12:22 Titel: |
|
|
ich weiß es nicht genau ich glaube VB6, aufjeden fall des aus dem MS Visual Studio 2008:
http://www.microsoft.com/germany/express/
welches VB beherschst du denn?
kann ich das mit einem ähnlichen Editor editieren oder wie ist das?
MfG pepper-jk |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 31.07.2009, 12:53 Titel: |
|
|
Die aus dem VB - Version aus dem Microsoft Visual Studio 2008 .NET ist auch eine VB.NET (Version 6 war die letzte ohne .NET und ist, wenn ich mich nicht komplett irre so auf dem Stand von 1998)
Für VB.NET musst du auch einiges ändern. Ich kanns mir dann einmal anschauen - es ist ja noch nicht viel Quelltext. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
pepper-jk
Anmeldungsdatum: 08.07.2009 Beiträge: 33
|
Verfasst am: 31.07.2009, 12:57 Titel: |
|
|
okay danke
also wenn dann der 1. quelltext, da dies der komplette ist (nur für den fall, dass die mehreren code angaben für verwirrung gesorgt haben )
MfG pepper-jk |
|
Nach oben |
|
 |
pepper-jk
Anmeldungsdatum: 08.07.2009 Beiträge: 33
|
Verfasst am: 31.07.2009, 20:06 Titel: |
|
|
oki habs soweit fertig
nur die zeilen
Code: | Len(Zeile) - InStr(Zeile, "=") |
in
Code: | Do Until EOF(1)
LineInput(Zeile)
If InStr(Zeile, "drive=") <> 0 Then
drive = PadRight(Zeile, Len(Zeile) - InStr(Zeile, "="))
Else
x = x + 1
If x > 20 Then
Print("Config: Error(drive)")
End If
End If
If InStr(Zeile, "projectAmount=") <> 0 Then
proZahl = PadRight(Zeile, Len(Zeile) - InStr(Zeile, "="))
Else
y = y + 1
If y > 20 Then
Print("Config: Error(projectAmount)")
End If
End If
Loop
|
mag er nich
MfG pepper-jk |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 31.07.2009, 21:49 Titel: |
|
|
Verwendest du jetzt Visual Studio 6.0 oder 7.0+ (.NET) ?
In .NET ließe sich das von dir zitierte Codestückchen etwa so implementieren:
Code: |
Imports System.IO
Public Class FrmMain
Const fCONFIG As String = "config.txt"
Dim Drive As String
Dim ProjectAmount As String
Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Zeile As String
If Not File.Exists(fCONFIG) Then
MessageBox.Show(fCONFIG + " existiert nicht!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Dim fs As FileStream = New FileStream(fCONFIG, IO.FileMode.Open)
Dim sr As StreamReader = New StreamReader(fs)
Drive = ""
ProjectAmount = ""
Do
Zeile = sr.ReadLine()
If Zeile.Contains("drive") Then
Drive = Zeile.Substring(Zeile.IndexOf("=") + 1)
End If
If Zeile.Contains("projectAmount") Then
ProjectAmount = Zeile.Substring(Zeile.IndexOf("=") + 1)
End If
Loop Until sr.EndOfStream
fs.Close()
If Drive = "" Or ProjectAmount = "" Then
MessageBox.Show("Fehlender Parameter in " + fCONFIG + "!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
End Class
|
_________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
|
|
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.
|
|