I made a script with dialog box where operafor fill your name and select and choose machine number and type of part. Everything is passed to variables for report header. My problem is that pcdmis ramdom crashes with program execution. Sometimes it is working with no problems and somethimes script causes pcdmis crash many times. And another strange thing is that sometimes dialog box opened but all listboxes are empty. Please do you have some suggestions, what is the cause of these crashes? Here is the script:
Sub Main
Dim App As Object
Set App = CreateObject ("PCDLRN.Application")
Dim Part As Object
Set Part = App.ActivePartProgram
Dim Cmds As Object
Set Cmds = Part.Commands
Dim Cmd As Object
Dim strLine As String
Dim strDefaultText As String
Open "D:\operator.txt" For Input As #1
Line Input #1, strLine
strLine = mid(strLine,2,len(strLine)-3)
strDefaultText = strLine
Close #1
Dim LaserList$(11)
LaserList(0) = "Laser 1"
LaserList(1) = "Laser 2"
LaserList(2) = "Laser 3"
LaserList(3) = "Laser 4"
LaserList(4) = "Laser 5"
LaserList(5) = "Laser 6"
LaserList(6) = "Laser 7"
LaserList(7) = "Laser 8"
LaserList(8) = "Laser 9"
LaserList(9) = "Laser 10"
LaserList(10) = "Laser 11"
LaserList(11) = "Laser 12"
Dim SeatType$(2)
SeatType(0) = "LH"
SeatType(1) = "RH"
SeatType(2) = "CC"
Dim Shift$(1)
Shift(0) = "Ranní"
Shift(1) = "Noční"
Begin Dialog DIALOG_1 31,32,135,135,"CMPV"
Listbox 15,12,30,30, SeatType$(),.seat
GroupBox 7,3,45,40,"Typ",.GroupBox1
Listbox 15,60,30,23, Shift$(),.sft
GroupBox 7,50,45,33,"Směna",.GroupBox2
Listbox 70,12,48,66, LaserList$(),.laser
GroupBox 65,3,60,80,"Laser",.GroupBox3
Text 16,86,30,12, "Jméno:"
TextBox 16,96,60,12, .name1
OKButton 18,112,40,14
CancelButton 80,112,40,14
End Dialog
Dim Dialg As DIALOG_1
Dialg.name1 = strDefaultText
Dim ShiftTime
ShiftTime = Hour(Time)
If ShiftTime >= 6 And ShiftTime < 18 Then
Dialg.sft = 0
Else
Dialg.sft = 1
End If
Dim buttonval As Integer
buttonval = Dialog(Dialg)
Dim Opr
Opr = Dialg.name1
Open "D:\operator.txt" For Output As #1
Write #1, Opr
Close #1
Dim SeatTpe As String
Dim LaserNum As String
Dim ShiftName As String
If buttonval = 0 Then
MsgBox "Cancel"
Else
Select Case Dialg.seat
Case 0
SeatTpe = "LH"
Case 1
SeatTpe = "RH"
Case 2
SeatTpe = "CC"
End Select
Select Case Dialg.laser
Case 0
LaserNum = "Laser 1"
Case 1
LaserNum = "Laser 2"
Case 2
LaserNum = "Laser 3"
Case 3
LaserNum = "Laser 4"
Case 4
LaserNum = "Laser 5"
Case 5
LaserNum = "Laser 6"
Case 6
LaserNum = "Laser 7"
Case 7
LaserNum = "Laser 8"
Case 8
LaserNum = "Laser 9"
Case 9
LaserNum = "Laser 10"
Case 10
LaserNum = "Laser 11"
Case 11
LaserNum = "Laser 12"
End Select
Select Case Dialg.sft
Case 0
ShiftName = "R"
Case 1
ShiftName = "N"
End Select
Dim bln
For Each Cmd In Cmds
If Cmd.Type = ASSIGNMENT Then
If Cmd.GetText(DEST_EXPR,0) = "SEAT" Then
bln = Cmd.PutText("""" + SeatTpe + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
If Cmd.GetText(DEST_EXPR,0) = "LASER" Then
bln = Cmd.PutText("""" + LaserNum + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
If Cmd.GetText(DEST_EXPR,0) = "NAME" Then
bln = Cmd.PutText("""" + Opr + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
If Cmd.GetText(DEST_EXPR,0) = "SHIFT" Then
bln = Cmd.PutText("""" + ShiftName + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
End If
Next Cmd
End If
End Sub
Sub Main
Dim App As Object
Set App = CreateObject ("PCDLRN.Application")
Dim Part As Object
Set Part = App.ActivePartProgram
Dim Cmds As Object
Set Cmds = Part.Commands
Dim Cmd As Object
Dim strLine As String
Dim strDefaultText As String
Open "D:\operator.txt" For Input As #1
Line Input #1, strLine
strLine = mid(strLine,2,len(strLine)-3)
strDefaultText = strLine
Close #1
Dim LaserList$(11)
LaserList(0) = "Laser 1"
LaserList(1) = "Laser 2"
LaserList(2) = "Laser 3"
LaserList(3) = "Laser 4"
LaserList(4) = "Laser 5"
LaserList(5) = "Laser 6"
LaserList(6) = "Laser 7"
LaserList(7) = "Laser 8"
LaserList(8) = "Laser 9"
LaserList(9) = "Laser 10"
LaserList(10) = "Laser 11"
LaserList(11) = "Laser 12"
Dim SeatType$(2)
SeatType(0) = "LH"
SeatType(1) = "RH"
SeatType(2) = "CC"
Dim Shift$(1)
Shift(0) = "Ranní"
Shift(1) = "Noční"
Begin Dialog DIALOG_1 31,32,135,135,"CMPV"
Listbox 15,12,30,30, SeatType$(),.seat
GroupBox 7,3,45,40,"Typ",.GroupBox1
Listbox 15,60,30,23, Shift$(),.sft
GroupBox 7,50,45,33,"Směna",.GroupBox2
Listbox 70,12,48,66, LaserList$(),.laser
GroupBox 65,3,60,80,"Laser",.GroupBox3
Text 16,86,30,12, "Jméno:"
TextBox 16,96,60,12, .name1
OKButton 18,112,40,14
CancelButton 80,112,40,14
End Dialog
Dim Dialg As DIALOG_1
Dialg.name1 = strDefaultText
Dim ShiftTime
ShiftTime = Hour(Time)
If ShiftTime >= 6 And ShiftTime < 18 Then
Dialg.sft = 0
Else
Dialg.sft = 1
End If
Dim buttonval As Integer
buttonval = Dialog(Dialg)
Dim Opr
Opr = Dialg.name1
Open "D:\operator.txt" For Output As #1
Write #1, Opr
Close #1
Dim SeatTpe As String
Dim LaserNum As String
Dim ShiftName As String
If buttonval = 0 Then
MsgBox "Cancel"
Else
Select Case Dialg.seat
Case 0
SeatTpe = "LH"
Case 1
SeatTpe = "RH"
Case 2
SeatTpe = "CC"
End Select
Select Case Dialg.laser
Case 0
LaserNum = "Laser 1"
Case 1
LaserNum = "Laser 2"
Case 2
LaserNum = "Laser 3"
Case 3
LaserNum = "Laser 4"
Case 4
LaserNum = "Laser 5"
Case 5
LaserNum = "Laser 6"
Case 6
LaserNum = "Laser 7"
Case 7
LaserNum = "Laser 8"
Case 8
LaserNum = "Laser 9"
Case 9
LaserNum = "Laser 10"
Case 10
LaserNum = "Laser 11"
Case 11
LaserNum = "Laser 12"
End Select
Select Case Dialg.sft
Case 0
ShiftName = "R"
Case 1
ShiftName = "N"
End Select
Dim bln
For Each Cmd In Cmds
If Cmd.Type = ASSIGNMENT Then
If Cmd.GetText(DEST_EXPR,0) = "SEAT" Then
bln = Cmd.PutText("""" + SeatTpe + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
If Cmd.GetText(DEST_EXPR,0) = "LASER" Then
bln = Cmd.PutText("""" + LaserNum + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
If Cmd.GetText(DEST_EXPR,0) = "NAME" Then
bln = Cmd.PutText("""" + Opr + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
If Cmd.GetText(DEST_EXPR,0) = "SHIFT" Then
bln = Cmd.PutText("""" + ShiftName + """", SRC_EXPR, 0)
Cmd.ReDraw
End If
End If
Next Cmd
End If
End Sub
Comment