/ Forside/ Teknologi / Udvikling / VB/Basic / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Mini Programmeringssprog
Fra : crha
Vist : 350 gange
50 point
Dato : 31-01-03 21:09

Hejsa

Jeg kom pludselig i tanke om det egentligt kunne være sjovt at lave sit eget miniprogrammeringssprog, hvor brugeren (mig selv hehe) skriver i et tekstfelt og klikker ok, og så kommer nogle udregninger alt efter hvad jeg har skrevet.

F.eks. jeg skriver følgende i et tekstfelt:

test(xxx)
proeve(xxx)

hvor xxx er en eller anden værdi og så pludser programmet værdierne eller laver noget andet med disse tal.

Hvordan gør jeg dette på en simpel måde?

Mvh.
Casper

 
 
Kommentar
Fra : crha


Dato : 31-01-03 21:27

Jeg vil gerne have det i Visual Basic 6.0 :)

Kommentar
Fra : technet


Dato : 31-01-03 21:40

kopiere nedenstående txt ind i en *.txt fil og så omdøb den til en *.frm fil ..... er det sådan du mener

------------------- cut ---------------------------------------------
Version 5.00
Begin VB.Form frmLeng
BorderStyle = 1 'Fixed Single
Caption = "Lenght "
ClientHeight = 4425
ClientLeft = 1905
ClientTop = 1995
ClientWidth = 6600
LinkTopic = "Form2"
MaxButton = 0 'False
MinButton = 0 'False
PaletteMode = 1 'UseZOrder
ScaleHeight = 4425
ScaleWidth = 6600
Begin VB.Frame Frame2
Caption = "Inches and Milimeters"
Height = 1935
Left = 240
TabIndex = 15
Top = 2160
Width = 2535
Begin VB.TextBox txtMili
Height = 285
Left = 240
TabIndex = 17
Top = 1320
Width = 2055
End
Begin VB.TextBox txtIncs
Height = 285
Left = 240
TabIndex = 16
Top = 600
Width = 2055
End
Begin VB.Label Label9
Caption = "Milimeters :"
Height = 255
Left = 240
TabIndex = 19
Top = 1080
Width = 855
End
Begin VB.Label Label8
Caption = "Inches :"
Height = 255
Left = 240
TabIndex = 18
Top = 360
Width = 855
End
End
Begin VB.TextBox txtMile
Height = 285
Left = 4200
TabIndex = 14
Top = 2880
Width = 2055
End
Begin VB.TextBox txtFeet
Height = 285
Left = 4200
TabIndex = 12
Top = 2400
Width = 2055
End
Begin VB.CommandButton cmdClos
Caption = "Close"
Height = 375
Left = 4800
TabIndex = 10
Top = 3600
Width = 855
End
Begin VB.TextBox txtInch
Height = 285
Left = 4200
TabIndex = 9
Top = 1920
Width = 2055
End
Begin VB.TextBox txtKilo
Height = 285
Left = 4200
TabIndex = 8
Top = 1440
Width = 2055
End
Begin VB.TextBox txtMete
Height = 285
Left = 4200
TabIndex = 7
Top = 960
Width = 2055
End
Begin VB.TextBox txtCent
Height = 285
Left = 4200
TabIndex = 6
Top = 480
Width = 2055
End
Begin VB.Frame Frame1
Caption = "Instruction"
Height = 1575
Left = 240
TabIndex = 0
Top = 360
Width = 2535
Begin VB.Label Label1
Caption = "To convert lenght enter numeric value of belonging lenght's units into its Text box and press Enter."
Height = 1095
Left = 480
TabIndex = 1
Top = 360
Width = 1695
End
End
Begin VB.Label Label7
Caption = "Miles :"
Height = 255
Left = 3120
TabIndex = 13
Top = 2880
Width = 855
End
Begin VB.Label Label6
Caption = "Feet :"
Height = 255
Left = 3120
TabIndex = 11
Top = 2400
Width = 855
End
Begin VB.Label Label5
Caption = "Inches :"
Height = 255
Left = 3120
TabIndex = 5
Top = 1920
Width = 975
End
Begin VB.Label Label4
Caption = "Kilometers :"
Height = 255
Left = 3120
TabIndex = 4
Top = 1440
Width = 975
End
Begin VB.Label Label3
Caption = "Meters :"
Height = 255
Left = 3120
TabIndex = 3
Top = 960
Width = 975
End
Begin VB.Label Label2
Caption = "Centimeters :"
Height = 255
Left = 3120
TabIndex = 2
Top = 480
Width = 975
End
End
Attribute VB_Name = "frmLeng"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'Author: Mr.Technet

Private Sub cmdClos_Click()
Unload Me ' Unload this form.
End Sub










Private Sub txtCent_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtCent.Text = Abs(txtCent.Text)
txtMete.Text = Val(txtCent.Text * 0.01)
txtKilo.Text = Val(txtCent.Text * 0.00001)
txtInch.Text = Val(txtCent.Text * 0.394)
txtFeet.Text = Val(txtCent.Text * 0.0328)
txtMile.Text = Val(txtCent.Text * 0.0000062)
End If
If Err Then
txtCent.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


Private Sub txtFeet_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtFeet.Text = Abs(txtFeet.Text)
txtCent.Text = Val(txtFeet.Text * 30.48)
txtMete.Text = Val(txtFeet.Text * 0.3048)
txtKilo.Text = Val(txtFeet.Text * 0.0003048)
txtInch.Text = Val(txtFeet.Text * 12)
txtMile.Text = Val(txtFeet.Text * 0.00018939)
End If
If Err Then
txtFeet.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


Private Sub txtInch_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtInch.Text = Abs(txtInch.Text)
txtCent.Text = Val(txtInch.Text * 2.54)
txtMete.Text = Val(txtInch.Text * 0.0254)
txtKilo.Text = Val(txtInch.Text * 0.0000254)
txtFeet.Text = Val(txtInch.Text * 0.0833333)
txtMile.Text = Val(txtInch.Text * 0.000015783)
End If
If Err Then
txtInch.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


Private Sub txtIncs_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtIncs.Text = Abs(txtIncs.Text)
txtMili.Text = Val(txtIncs.Text * 25.4)
End If
If Err Then
txtIncs.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


Private Sub txtKilo_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtKilo.Text = Abs(txtKilo.Text)
txtCent.Text = Val(txtKilo.Text * 100000)
txtMete.Text = Val(txtKilo.Text * 1000)
txtInch.Text = Val(txtKilo.Text * 39400)
txtFeet.Text = Val(txtKilo.Text * 328)
txtMile.Text = Val(txtKilo.Text * 0.62)
End If
If Err Then
txtKilo.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


Private Sub txtMete_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtMete.Text = Abs(txtMete.Text)
txtCent.Text = Val(txtMete.Text * 100)
txtKilo.Text = Val(txtMete.Text * 0.001)
txtInch.Text = Val(txtMete.Text * 39.4)
txtFeet.Text = Val(txtMete.Text * 3.28)
txtMile.Text = Val(txtMete.Text * 0.00062)
End If
If Err Then
txtMete.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


Private Sub txtMile_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtMile.Text = Abs(txtMile.Text)
txtCent.Text = Val(txtMile.Text * 1609400)
txtMete.Text = Val(txtMile.Text * 16094)
txtKilo.Text = Val(txtMile.Text * 1.6094)
txtInch.Text = Val(txtMile.Text * 633600)
txtFeet.Text = Val(txtMile.Text * 5280)
End If
If Err Then
txtMile.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


Private Sub txtMili_KeyPress(KeyAscii As Integer)
On Error Resume Next
If (KeyAscii = 13) Then
txtMili.Text = Abs(txtMili.Text)
txtIncs.Text = Val(txtMili.Text * 0.03937)
End If
If Err Then
txtMili.Text = ""
MsgBox "Can't connvert ! Enter numeric value only !"
End If

End Sub


----------------------------------------------- cut ------------------------------------------------------


og nu kan du jo selv prøve at lege med nogle andre beregninger

Kommentar
Fra : crha


Dato : 31-01-03 23:10

Nej, det er desværre ikke det jeg mener. Man skal kunen skrive ligesom man kan i notepad, f.eks.

I steder for at skrive:

<h1>Stor tekst</h1> kan jeg bare skrive [Qpu{1}]Stor tekst[/Qpu{1}]

Dette er bare et eksempel

Kommentar
Fra : gandalf


Dato : 31-01-03 23:25

Hej crha

Det du beder om her er dit eget tagsprog eller hvad? Hvis dette er tilfældet kan du jo bare lave en 2d array over hvilke tag du har, og hvad de skal omdøbes til, og så i runtime replacer du bare dine tags.

Hvis du derimod vil lave dit eget programmeringssprog, så vil jeg bestemt ikke foreslå dig at lave det i VB. Derimod i C++ eller Delphi. Så skal du lave det i LEX/Yacc, hvis du aldrig har hørt om disse 2 begreber så har du godt nok en lang vej foran dig.

Du kan også vælge at bruge Microsofts VBscript komponent, med denne kan du lægge VB ind i dine projekter, og lade denne komponent kende til dine forskellige funktion og properties inde i dit projekt, så vil disse nemlig indgå i det programmeringssprog som du danner på baggrund af VBScript. Det er sådan VBA til word, excell..osv er lavet.

En anden mulighed hvis som du skriver i dit spørgsmål at du bare vil kunne parse en expression, så kan du i VB bruge funtionen eval, som evaluere en expression.

f.eks.: msgbox eval("10+10") //skriver 100

Gandalf

Kommentar
Fra : crha


Dato : 01-02-03 16:23

Det er ikke det jeg mener, her er et eksempel som jeg håber i kan forstå:

I et tekstfelt i programmet skriver jeg f.eks.:

tekst{hej}
farve{gul}
stoerrelse{stor}

Så i program koden skulle stå noget i retning af:

If tekstfelt contain tekst{xxx} then 'xxx er så den værdi der er skrevet i tekstboksen, altså her hej
Tekst = xxx
ElseIf tekstfelt contain farve{xxx} then
Farve = xxx
ElseIf tekstfelt contain stoerrelse{xxx} then
Stoerrelse = xxx
End If

Og i et resultatfelt vil følgende så komme:

If Stoerrelse <> "" then
Size = Stoerrelse
ElseIf Farve <> "" then
Fontcolor = Farve
Tekst <> "" then
Text = Tekst
End If

label1.caption = Size & Fontcolor & Text


Dette er måske svært at forstå, men det skal altså ikke bruges til noget stort. Kun til mig selv, så det er ikke så avanceret.




Kommentar
Fra : DJxDarkness


Dato : 21-02-03 05:30

Det du spørger om, er forholdsvis simpelt... Og alligevel ikke...
Det kommer an på, hvilken funktionalitet, du ønsker.

Et simpelt eksempel kan være:

----------KODE----------
Public Sub CheckTextLine(ctLine As String)
If LCase(Left(ctLine, 6)) = "tekst{" Then
If Right(ctLine, 1) = "}" Then
Tekst = Mid(ctLine, 7, (Len(ctLine) - 7))
End If
ElseIf LCase(Left(ctLine, 6)) = "farve{" Then
........... 'Fortsæt selv her......
End If
End Sub
----------KODE----------

Hvis du ønsker mere funktionalitet i hver linie du skriver, er koden selvfølgelig lidt mere avanceret.
Håber, du kan bruge svaret til noget.

Kommentar
Fra : crha


Dato : 21-02-03 15:05

WoW, fatter vist ikke så meget af det der :)
Kan du forsklare hvad det gør og hvor jeg selv skal sætte noget ind?

Jeg skal i første omgang bare bruge det ting ting som pop-up, tekst osv.

Kommentar
Fra : oldwiking


Dato : 21-02-03 19:22

Et programel som er uhyre let at at anvende er
Delphi Pascal som har alt hvad du skal bruge og er uhyre let at formulerer.
Interesseret ?
Mvh OW


Kommentar
Fra : crha


Dato : 21-02-03 21:05

Hmmm, ved ikke hvad det går ud på. Prøvede engang Delphi

Kommentar
Fra : oldwiking


Dato : 21-02-03 22:03

Sådan nogenlunde forstår jeg dit spørgsmål.
En eller anden trykknap som du har placeret i en windows applikation og som du har forudset til at addere 2 talværdier i hver set felt
hvor resultat placeres i et 3 felt.
Du indtaster talværdier i felt værdiA og felt værdiB trykker på knappen add_it og aflæser resultatet i feltet SUM

Følgende procedure er en meget simplificeret men brugbar metode og blot et eksempel af en masse muligheder
Den øvrige del af dette program er blot lidt arbejde med musen for at trække et brugbart window samme
og følgende procedure egentlig alt hvad du har brug for for at opfylde betingelserne.
procedure add_it;
var
val:currency;
begin
val := strtoint(værdiA.test);
val := val + strtoint(værdiB.test);
sum.text := inttostr(val);
end;




Kommentar
Fra : crha


Dato : 22-02-03 00:08

Nej, det jeg vil have er et tekstfelt og en knap. Det er svært at forklare.
Det skal virke som et slags programmeringssprog. og IKKE noget med at addere eller sådan noget

Kommentar
Fra : oldwiking


Dato : 22-02-03 07:46

?????

dette var bare et eksempel, hvordan det udformes og hvad det skal udføre er her underordnet.
Prøv at konkretisere hvad du vil !
OW

Kommentar
Fra : crha


Dato : 22-02-03 12:48

Er det da ikke lykkedes meget godt? Hvis det íkke er beskrevet nok i de kommentare og det spørgsmål jeg har stillet, ved jeg ikke hvordan det skal gøres...

Kommentar
Fra : oldwiking


Dato : 22-02-03 18:23

(Nej, det jeg vil have er et tekstfelt og en knap. Det er svært at forklare.
Det skal virke som et slags programmeringssprog. og IKKE noget med at addere eller sådan noget)
Dine comments som jeg forsøger at granske
MVH OW




Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177449
Tips : 31962
Nyheder : 719565
Indlæg : 6408120
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste