Hallo Jochen,
habe es ausprobiert - funzt immer noch nicht. Ich habe mal
einen Auszug aus der Funktion beigefügt.
Der folgende Abschnitt liest das Datum zu ->weiter unten ist die Komplette Funktion
'------------------------------------------------------------------------------------------------
blkFld = tmp3 'S7 Bausteinordner
Blocks = blkFld.readPlcBlocksList 'liest alle Bausteine aus dem S7 Bausteinordner
Dim Test As Object '(Date)
For Each N In Blocks
BlockData = blkFld.GetBlock(N)
With BlockData
Test = .LastCodeChange
Test = .LastInterfaceChange
Test = .LastModified
End With
listBlockData.Add(BlockData)
Next N
'------------------------------------------------------------------------------------------------
Private Function GetFolderContent()
lblStep7ProjectFolder.Text = ""
blkFld = Nothing
If treeStep7Project.SelectedNode IsNot Nothing Then
'Ausgewählter Node in Typ ProjectFolder konvertieren
'Teil 1
'Class myTreeNode - enthält TreeNode und public myObject
'CType(treeStep7Project.SelectedNode, myTreeNode) gibt den ausgewählten Node als Objekt zurück
'
Dim tmp = CType(treeStep7Project.SelectedNode, myTreeNode)
Dim fld As ProjectFolder = CType((tmp).myObject, ProjectFolder)
Me.Text = "Step7 Projekt [" & fld.Project.ProjectFile & "] [" & fld.Project.ProjectDescription & "]"
lblStep7ProjectFolder.Text = "Step7 Projekt [" & fld.Project.ProjectFile & "] [" & fld.Project.ProjectDescription & "]"
'Dim tmp = CType(treeStep7Project.SelectedNode, myTreeNode)
If TypeOf tmp.myObject Is IBlocksFolder Then
blkFld = CType(tmp.myObject, IBlocksFolder)
End If
'Prüfe ob der alte ausgewählte Node nicht der neue Node ist
' If oldNode IsNot treeStep7Project.SelectedNode Then
Dim FT As Object = CType(tmp.myObject, Object).GetType
'Prüfe ob Bausteinordner ausgewählt wurde
Dim Ordner As String = ""
Ordner = UCase(FT.ToString)
If Ordner = UCase("DotNetSiemensPLCToolBoxLibrary.DataTypes.Projectfolders.Step7V5.S7ProgrammFolder") Then
'Wurde Verzeichnis Programmfolder gewählt, dann
'lies Symboltabelle, Bausteine und AWL-Quellenverzeichnis
'1. Symboltabelle übernehmen
Dim tmpSymb0 As S7ProgrammFolder = CType(tmp.myObject, S7ProgrammFolder)
Dim tmp2 As SymbolTable = CType(tmpSymb0.SymbolTable, SymbolTable)
dtaSymbolTable.Rows.Clear()
For Each step7SymbolTableEntry In tmp2.SymbolTableEntrys
dtaSymbolTable.Rows.Add(New Object() {step7SymbolTableEntry.Symbol, step7SymbolTableEntry.DataType, step7SymbolTableEntry.Operand, step7SymbolTableEntry.Comment})
Next step7SymbolTableEntry
'2. Bausteinliste übernehmen
Dim tmp3x As S7ProgrammFolder = CType(tmp.myObject, S7ProgrammFolder)
Dim tmp3 As BlocksOfflineFolder = CType(tmp3x.BlocksOfflineFolder, BlocksOfflineFolder)
Dim Blocks As List(Of DataTypes.Blocks.ProjectBlockInfo) 'Liste der Datenbausteine mit Datentyp Block ProjektBlockInfo
Dim BlockData As DataTypes.Blocks.Step7V5.S7Block 'Baustein Informationen
Dim listBlockData As New List(Of DataTypes.Blocks.Step7V5.S7Block) 'Liste Baustein Informationen
'------------------------------------------------------------------------------------------------
blkFld = tmp3 'S7 Bausteinordner
Blocks = blkFld.readPlcBlocksList 'liest alle Bausteine aus dem S7 Bausteinordner
Dim Test As Object '(Date)
For Each N In Blocks
BlockData = blkFld.GetBlock(N)
With BlockData
Test = .LastCodeChange
Test = .LastInterfaceChange
Test = .LastModified
End With
listBlockData.Add(BlockData)
Next N
'------------------------------------------------------------------------------------------------
Stop
For Each Info In listBlockData
Dim Symbol As String
Dim Datum As Object
Datum = Info.LastCodeChange
Symbol = String.Empty
Symbol = Info.Title
'Try
'Symbol = Info.SymbolTabelEntry.Symbol
'Catch e As Exception
'Symbol = e.ToString
'End Try
InfBausteine.Rows.Add(New Object() {Info.BlockName, Symbol, Datum})
Next Info
lstBoxBausteine.Items.AddRange(blkFld.readPlcBlocksList().ToArray()) 'Schreibt die ganze Baustein Liste in eine Listbox
'Bausteine zu Listbox hinzufügen
'3. AWL Quellen übernehmen
'Dim tmp4x As S7ProgrammFolder = CType(tmp.myObject, S7ProgrammFolder)
Dim tmp4x As Object = CType(tmp.myObject, Object)
'Dim tmp4 As SourceFolder = CType(tmp4x.SourceFolder, SourceFolder)
'src = CType(tmp4x, SourceFolder)
'lstBoxAWLBausteine.Items.Clear()
'lstBoxAWLBausteine.Items.AddRange(src.readPlcBlocksList().ToArray())
End If
'End If
'Prüfe ob das im Tree gespeicherte Objekt eine Symboltabelle ist
If tmp.myObject.GetType() Is GetType(SymbolTable) Then
'Gespeichertes Objekt ist eine Symboltabelle
Dim tmp2 = CType(tmp.myObject, SymbolTable)
lstBoxBausteine.Items.Clear()
dtaSymbolTable.Rows.Clear()
For Each step7SymbolTableEntry In tmp2.SymbolTableEntrys
dtaSymbolTable.Rows.Add(New Object() {step7SymbolTableEntry.Symbol, step7SymbolTableEntry.DataType, step7SymbolTableEntry.Operand, step7SymbolTableEntry.Comment})
Next step7SymbolTableEntry
lblToolStripFileSystemFolder.Text = tmp2.Folder
ElseIf blkFld IsNot Nothing Then
'Prüfe ob das Verzeichnis ein Bausteinverzeichnis vom Typ "IBlocksFolder" ist
'Prüfe ob der alte ausgewählte Node nicht der neue Node ist
If oldNode IsNot treeStep7Project.SelectedNode Then
If tmp.myObject.GetType() Is GetType(BlocksOfflineFolder) Then
'Lösche Inhalt der "viewBlockList"
lstBoxBausteine.Items.Clear()
'ProjectBlockInfo[] arr =
'NumericComparer nc = new NumericComparer();
'Array.Sort(arr, nc);
'Anzeige des gerade geöffneten Ordners im Statustrip
lblToolStripFileSystemFolder.Text = (CType(blkFld, BlocksOfflineFolder)).Folder
lstBoxBausteine.Items.AddRange(blkFld.readPlcBlocksList().ToArray())
'Anzeige Bausteinverzeichnis in "viewBlockList"
lstBoxBausteine.Visible = True
Else
'If tmp.myObject.GetType() Is GetType(SourceFolder) Then
'Prüfe ob das im Tree gespeicherte Objekt ein SourceFolder ist
'src = CType(tmp.myObject, SourceFolder)
'Prüfe ob der alte ausgewählte Node nicht der neue Node ist
'If oldNode IsNot treeStep7Project.SelectedNode Then
'Lösche Inhalt der "viewBlockList"
'lstBoxAWLBausteine.Items.Clear()
'lstBoxAWLBausteine.Items.AddRange(src.readPlcBlocksList().ToArray())
'End If
'Anzeige AWL Verzeichnis in "viewBlockList"
'lstBoxAWLBausteine.Visible = True
'Anzeige des gerade geöffneten Ordners im Statustrip
'lblToolStripFileSystemFolder.Text = src.Folder
'End If
End If
End If
Else
' Dim FldOjc As Object = tmp.myObject.GetType
' MsgBox("Type=" & tmp.myObject.GetType.ToString)
End If
End If
Return Nothing
End Function
Grüße Helem