Class1.vb. _Dlugosc_stopnia = value End Set End Property Public Property Faza As Single Get Return _Faza End Get

Podobne dokumenty
Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2.

Klasa bazowa i klasy potomne - doskonalenie umiejtnoci projektowania i wykorzystania klas (45 min)

01 grid tablica grid. Copyright 2017, mgr inż. Janusz Bonarowski 1

Programowanie obiektowe w VB cz 2

Instrukcje cykliczne (pętle) WHILE...END WHILE

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

DataGridView. Aby dodawać kolumny wybieramy z listy zadań Add Column..., co wywoła okno dodawania kolumn, rys. 2. Rysunek 1

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Aplikacje geodezyjne

Laboratorium Programowania Kart Elektronicznych

Ćwiczenie VB3.4 Struktura Try...Catch, obiekt Err, metoda Err.Raise (Strukturalna obsługa wyjątków)

Tablice, DataGridView

Platforma.NET laboratorium 1. Visual Basic.NET podstawowe elementy języka. Wykonanie warunkowe If End If

Laboratorium Programowania Kart Elektronicznych

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function:

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Programowanie mikrokontrolerów - laboratorium

Aplikacja notatnik. Opracował: Damian Krzesimowski

Materiały do laboratorium MS ACCESS BASIC

Formatowaniem nazywamy proces przekształcenia danych z postaci binarnej do postaci tekstowej lub proces przekształcenia danych w odwrotnym

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

Automatyzacja pracy w AutoCAD

Wprowadzenie do programowania w VBA

Ćwiczenie laboratoryjne. Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005

LibreOffice Calc VBA

Instrukcja laboratoryjna nr.4

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Visual Basic dla AutoCAD

Visual Basic: Tablice, sortowanie, r. ak. 2014/2015

Informatyka 1. Przetwarzanie tekstów

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

INSTRUKCJA SKOKU GOTO

Janusz Górczyński. Wprowadzenie do programowania obiektowego w VB.NET

Technologia informacyjna programowanie Janusz Uriasz

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Programowanie Obiektowe w Visual Basic.NET Konrad Lipiński

PLIKI TEKSTOWE F C E 30 0D 0A 42 6F 72 6C 61 6E 64 1A T U R B O _ P A S C A L _ 7. 0

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Instrukcje sterujące. Programowanie komputerowe

4.1. Analiza AWN jest dokonywana na poziomie VBA

Paweł Cieśla. Dokumentacja projektu

Palindromy. Przykładowe rozwiązanie

Paweł Górczyński, Janusz Górczyński. Aplikacja MS SQL Server i MS VB.NET do zarządzania studiami podyplomowymi

Funkcje zawarte w bibliotece < io.h >

Podstawy programowania

Obsługa blędów i zewnętrznych plików

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Procedury i funkcje. Programowanie komputerowe

Ten odcinek Akademii PC Kuriera poświęcony zostanie tworzeniu i wykorzystaniu funkcji i procedur w języku Visual Basic.NET.

Platformy Programistyczne Podstawy języka Java

Funkcje zawarte w bibliotece < io.h >

akademia androida Składowanie danych część VI

Programowanie w VB Proste algorytmy sortowania

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 3. Programowanie komputerowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Programowanie telefonów z Windows Phone 7, cz. 4

Podstawy programowania w Visual Basic.Net

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

M a k r a i d o d a t k o w e f o r m a n t y

Visual Basic for Applications. Wstęp

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Pascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

Metody dostępu do danych

Technologie informacyjne: Excel i VBA

Praca z bazą danych. Rysunek 1. Projekt tabeli UZYTKOWNIK bazy KURSY

Ilość cyfr liczby naturalnej

Katalog książek cz. 2

Wykład 6 Dziedziczenie cd., pliki

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Podstawy programowania

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

Algorytmika i Programowanie VBA 1 - podstawy

Janusz Górczyński. Projekt WynajemSal realizowany w trakcie drugiego semestru studiów podyplomowych

Wstęp do programowania. Różne różności

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Akademia Morska w Szczecinie Wydział Nawigacyjny TRANSPORT MORSKI

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

dane.add "w" dane.add "bez" dane.add "pod" dane.add "nad" dane.add "znad" dane.add "poprzez" dane.add "sprzed" dane.add "zza" dane.add "mgr" dane.

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Podstawy otwartych języków programowania Przechowywanie danych

Programowanie w językach wysokiego poziomu

Visual Basic for Application (VBA)

Integracja Comarch e-sprawozdania

Pętle instrukcje powtórzeo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

DAO. tworzenie tabeli

Kiedy i czy konieczne?

Zmienne, instrukcje warunkowe

Metody Metody, parametry, zwracanie wartości

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Visual Basic for Application (VBA)

Zaawansowane aplikacje WWW - laboratorium

Klasy i obiekty cz II

Transkrypt:

Tematy: Xml Zapis i odczyt stopnia przy pomocy serializacji. Zapis i odczyt całego wału przy pomocy własnych procedur. Zamierzamy dodać do aplikacji nowe funkcjonalności: 1. Zapis i odczyt pojedynczego stopnia wału serializacją. 2. Zapis i odczyt całego wału metodą tekstową. 3. Zapis i odczyt kolekcji stopniami. Funkcjonalności te dodamy do zadania z zajęć 3. Kod dodany wyróżniono kolorem żółtym. Class1.vb Public Class Stopien_walu_parametry Private _Srednica_stopnia As Single Private _Dlugosc_stopnia As Single Private _Faza As Single Private _Modyfikacja_stopnia As String Public Property Srednica_stopnia As Single Get Return _Srednica_stopnia End Get Set(ByVal value As Single) _Srednica_stopnia = value End Set End Property Public Property Dlugosc_stopnia As Single Get Return _Dlugosc_stopnia End Get Set(ByVal value As Single) _Dlugosc_stopnia = value End Set End Property Public Property Faza As Single Get Return _Faza End Get Set(ByVal value As Single) _Faza = value End Set End Property Public Property Modyfikacja_stopnia As String Get Return _Modyfikacja_stopnia End Get Set(ByVal value As String) _Modyfikacja_stopnia = value End Set End Property Public Sub Rysuj(ByVal pozycja_x As Single, ByVal pozycja_y As Single, _ ByVal dlugosc As Single, ByVal srednica As Single) Dim objrys As System.Drawing.Graphics Dim objpiorowal As New System.Drawing.Pen(Color.Red, 2) objrys = Form1.CreateGraphics objrys.drawrectangle(objpiorowal, pozycja_x, pozycja_y, dlugosc, srednica) Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 1

Public Sub Rysuj(ByVal pozycja_x As Single, ByVal pozycja_y As Single, _ ByVal dlugosc As Single, ByVal srednica As Single, ByVal faza As Single) Dim objrys As System.Drawing.Graphics Dim objpiorowal As New System.Drawing.Pen(Color.Red, 2) Dim faza_rys As Single objrys = Form1.CreateGraphics If faza > 0 Then objrys.drawrectangle(objpiorowal, pozycja_x + faza, pozycja_y, _ dlugosc - faza, srednica) objrys.drawline(objpiorowal, pozycja_x, pozycja_y + faza, _ pozycja_x, pozycja_y + srednica - faza) objrys.drawline(objpiorowal, pozycja_x, pozycja_y + faza, pozycja_x + faza, _ pozycja_y) objrys.drawline(objpiorowal, pozycja_x, pozycja_y + srednica - faza, _ pozycja_x + faza, pozycja_y + srednica) ElseIf faza < 0 Then faza_rys = Math.Abs(faza) objrys.drawrectangle(objpiorowal, pozycja_x, pozycja_y, dlugosc - faza_rys, _ srednica) objrys.drawline(objpiorowal, pozycja_x + dlugosc, pozycja_y + faza_rys, _ pozycja_x + dlugosc, pozycja_y + srednica - faza_rys) objrys.drawline(objpiorowal, pozycja_x + dlugosc, pozycja_y + faza_rys, _ pozycja_x + dlugosc - faza_rys, pozycja_y) objrys.drawline(objpiorowal, pozycja_x + dlugosc, _ pozycja_y + srednica - faza_rys, pozycja_x + dlugosc - faza_rys, _ pozycja_y + srednica) Public Class Modyfikacja Public Overridable Sub Rysuj(ByVal X1 As Single, ByVal Y1 As Single, _ ByVal X2 As Single, ByVal Y2 As Single, _ ByVal X3 As Single, ByVal Y3 As Single, _ ByVal X4 As Single, ByVal Y4 As Single) Public Class Pret Inherits Modyfikacja Public Overrides Sub Rysuj(ByVal X1 As Single, ByVal Y1 As Single, _ ByVal X2 As Single, ByVal Y2 As Single, _ ByVal X3 As Single, ByVal Y3 As Single, _ ByVal X4 As Single, ByVal Y4 As Single) Dim objrys As System.Drawing.Graphics Dim objpiorowalu As New System.Drawing.Pen(Color.Red, 1) objrys = Form1.CreateGraphics objrys.drawline(objpiorowalu, X1, Y1, X4, Y4) objrys.drawline(objpiorowalu, X2, Y2, X3, Y3) Public Class Gwint Inherits Modyfikacja Public Overrides Sub Rysuj(ByVal X1 As Single, ByVal Y1 As Single, _ ByVal X2 As Single, ByVal Y2 As Single, _ ByVal X3 As Single, ByVal Y3 As Single, _ ByVal X4 As Single, ByVal Y4 As Single) Dim objrys As System.Drawing.Graphics Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 2

Dim objpiorowalu As New System.Drawing.Pen(Color.Red, 1) objrys = Form1.CreateGraphics objrys.drawline(objpiorowalu, X1, Y1, X3, Y3) objrys.drawline(objpiorowalu, X2, Y2, X4, Y4) Public Class Stopien_walu_powiazania Inherits Stopien_walu_parametry Public Stopien_walu_odziedziczony As Stopien_walu_parametry Public Adres_po As Stopien_walu_parametry Form1.vb Imports System.IO Imports System.Xml Public Class Form1 Dim x1 As Single Dim y1 As Single Dim objrys As System.Drawing.Graphics Dim objpioroos As New System.Drawing.Pen(Color.Green, 1) Dim objpiorowal As New System.Drawing.Pen(Color.Red, 2) Dim X_osi As Integer = 50 Dim Y_osi As Integer = 200 Dim x_pocz As Integer = X_osi Dim Liczba_stopni As Integer ''Dim wsk_pocz_walka As Stopien_walu_powiazania ''Dim wsk_kon_walka As Stopien_walu_powiazania Dim Kolekcja_stopni_walu As New Collection Dim mode As Integer Dim faza As Single = 0 Dim x_nowy_stopien As Single Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load objrys = Me.CreateGraphics mode = 0 Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) _ Handles Me.MouseMove LabelKoordynaty.Text = "X=" & e.x & " Y=" & e.y Private Sub Form1_MouseClick(sender As Object, e As MouseEventArgs) _ Handles Me.MouseClick Dim x_stopnia As Single Dim y_stopnia As Single Dim szerokosc As Single Dim wysokosc As Single Dim mojstopien As New Stopien_walu_parametry ''Dim mojstopien_powiazania As New Stopien_walu_powiazania Dim i As Integer Dim objmodyf As Modyfikacja Dim srednica As Single Dim dlugosc As Single objrys.drawline(objpioroos, X_osi, Y_osi, 600, Y_osi) objrys.drawline(objpioroos, X_osi, X_osi, X_osi, 350) Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 3

If mode = 10 Then x1 = e.x y1 = e.y x_stopnia = x_pocz y_stopnia = y1 szerokosc = x1 - x_pocz wysokosc = (Y_osi - y1) * 2 x_pocz = x_pocz + szerokosc Liczba_stopni = Liczba_stopni + 1 mojstopien.dlugosc_stopnia = szerokosc mojstopien.srednica_stopnia = wysokosc mojstopien.faza = faza Kolekcja_stopni_walu.Add(mojStopien) If faza <> 0 Then mojstopien.rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc, faza) Else mojstopien.rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc) x_nowy_stopien = x_pocz ElseIf mode = 13 Then x1 = e.x objrys.clear(systemcolors.control) i = 1 Do Until x1 > x_pocz And x1 <= x_pocz + Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia x_pocz = x_pocz + Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia i = i + 1 Kolekcja_stopni_walu.Remove(i) Liczba_stopni = Liczba_stopni - 1 Call Narysuj() ElseIf mode = 21 Then 'pręt x1 = e.x i = 1 Do Until x1 > x_pocz And x1 <= x_pocz + Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia x_pocz = x_pocz + Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia i = i + 1 mojstopien = Kolekcja_stopni_walu.Item(i) mojstopien.modyfikacja_stopnia = "Pret" objmodyf = New Pret srednica = mojstopien.srednica_stopnia dlugosc = mojstopien.dlugosc_stopnia objmodyf.rysuj(x_pocz, Y_osi - srednica / 2, x_pocz, Y_osi + srednica / 2, x_pocz + dlugosc, Y_osi - srednica / 2, x_pocz + dlugosc, Y_osi + srednica / 2) x_pocz = x_nowy_stopien ElseIf mode = 22 Then 'gwint x1 = e.x i = 1 Do Until x1 > x_pocz And x1 <= x_pocz + Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 4

x_pocz = x_pocz + Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia i = i + 1 mojstopien = Kolekcja_stopni_walu.Item(i) mojstopien.modyfikacja_stopnia = "Gwint" objmodyf = New Gwint srednica = mojstopien.srednica_stopnia dlugosc = mojstopien.dlugosc_stopnia objmodyf.rysuj(x_pocz, Y_osi - srednica / 2 + 8, x_pocz, Y_osi + srednica / 2-8, x_pocz + dlugosc, Y_osi - srednica / 2 + 8, x_pocz + dlugosc, Y_osi + srednica / 2-8) x_pocz = x_nowy_stopien ElseIf mode = 40 Then 'XML - zapisywanie stopnia do pliku, Serializacja x1 = e.x i = 1 Do Until x1 > x_pocz And x1 <= x_pocz + _ Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia x_pocz = x_pocz + Kolekcja_stopni_walu.Item(i).Dlugosc_stopnia i = i + 1 mojstopien = Kolekcja_stopni_walu.Item(i) Dim SerializacjaDoPlikuXml As Serialization.XmlSerializer Dim plikxml As FileStream = New FileStream("Dane_stopnia.xml", _ FileMode.Create, FileAccess.Write, FileShare.None) SerializacjaDoPlikuXml = _ New Serialization.XmlSerializer(GetType(Stopien_walu_parametry)) SerializacjaDoPlikuXml.Serialize(plikXML, mojstopien) plikxml.close() MsgBox("Plik XML dla stopnia został zbudowany.") x_pocz = x_nowy_stopien Private Sub PokażToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles PokażToolStripMenuItem.Click Call Narysuj() Private Sub SkasujToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles SkasujToolStripMenuItem.Click objrys.clear(systemcolors.control) Private Sub Narysuj() Dim x_stopnia As Single Dim y_stopnia As Single Dim szerokosc As Single Dim wysokosc As Single ''Dim walek_tim As Stopien_walu_powiazania Dim wsk_kolekcji As Stopien_walu_parametry Dim objmodyf As Modyfikacja Dim srednica As Single Dim dlugosc As Single objrys.drawline(objpioroos, X_osi, Y_osi, 600, Y_osi) objrys.drawline(objpioroos, X_osi, X_osi, X_osi, 350) Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 5

For Each wsk_kolekcji In Kolekcja_stopni_walu x_stopnia = x_pocz y_stopnia = Y_osi - wsk_kolekcji.srednica_stopnia / 2 szerokosc = wsk_kolekcji.dlugosc_stopnia wysokosc = wsk_kolekcji.srednica_stopnia If wsk_kolekcji.faza <> 0 Then wsk_kolekcji.rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc, wsk_kolekcji.faza) Else wsk_kolekcji.rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc) srednica = wsk_kolekcji.srednica_stopnia dlugosc = wsk_kolekcji.dlugosc_stopnia If wsk_kolekcji.modyfikacja_stopnia = "Pret" Then objmodyf = New Pret objmodyf.rysuj(x_pocz, Y_osi - srednica / 2, x_pocz, Y_osi + srednica / 2, x_pocz + dlugosc, Y_osi - srednica / 2, x_pocz + dlugosc, Y_osi + srednica / 2) ElseIf wsk_kolekcji.modyfikacja_stopnia = "Gwint" Then objmodyf = New Gwint objmodyf.rysuj(x_pocz, Y_osi - srednica / 2 + 8, x_pocz, Y_osi + srednica / 2-8, x_pocz + dlugosc, Y_osi - srednica / 2 + 8, x_pocz + dlugosc, Y_osi + srednica / 2-8) x_pocz = x_pocz + szerokosc Next Private Sub NowyWałekToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles NowyWałekToolStripMenuItem.Click mode = 0 Kolekcja_stopni_walu.Clear() Liczba_stopni = 0 objrys.clear(systemcolors.control) objrys.drawline(objpioroos, X_osi, Y_osi, 600, Y_osi) objrys.drawline(objpioroos, X_osi, X_osi, X_osi, 350) Private Sub StopnieBezFazyToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles StopnieBezFazyToolStripMenuItem.Click mode = 10 faza = 0 Private Sub StopnieZFazaZLewejStronyToolStripMenuItem_Click(sender As Object, _ e As EventArgs) Handles StopnieZFazaZLewejStronyToolStripMenuItem.Click mode = 10 faza = 8 Private Sub StopnieZFazaZPrawejStronyToolStripMenuItem_Click(sender As Object, _ e As EventArgs) Handles StopnieZFazaZPrawejStronyToolStripMenuItem.Click mode = 10 faza = -8 Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 6

Private Sub NicNieRóbToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles NicNieRóbToolStripMenuItem.Click mode = 0 Private Sub UsuńStopieńToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles UsuńStopieńToolStripMenuItem.Click mode = 13 Private Sub PrętToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles PrętToolStripMenuItem.Click mode = 21 Private Sub GwintToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles GwintToolStripMenuItem.Click mode = 22 Private Sub StopieńZapiszToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles StopieńZapiszToolStripMenuItem.Click mode = 40 Private Sub StopieńCzytajToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles StopieńCzytajToolStripMenuItem.Click ' XML stopień czytaj; Serializacja Dim mojstopien As New Stopien_walu_parametry Dim PlikDanych As FileStream = File.Open("Dane_stopnia.xml", FileMode.Open, _ FileAccess.Read) Dim MojaSerializacja As New _ Serialization.XmlSerializer(GetType(Stopien_walu_parametry)) mojstopien = MojaSerializacja.Deserialize(PlikDanych) PlikDanych.Close() Kolekcja_stopni_walu.Add(mojStopien) Liczba_stopni = Liczba_stopni + 1 Call Narysuj() Private Sub WałekZapiszToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles WałekZapiszToolStripMenuItem.Click ' XML Zapis całego wałka tekstowo Dim plik As String Dim dlugosc, srednica, faza As Single Dim modyfikacja_stopnia As String plik = "Dane_walka.xml" FileOpen(1, plik, OpenMode.Output) PrintLine(1, "<?xml version=" & Chr(34) & "1.0" & Chr(34) & "?>") PrintLine(1, "<Walek xmlns:xsi=" & Chr(34) & _ "http://www.w3.org/2001/xmlschema-instance" & _ Chr(34) & " xmlns:xsd=" & Chr(34) & _ "http://www.w3.org/2001/xmlschema" & Chr(34) & ">") For Each wsk_kolekcji In Kolekcja_stopni_walu PrintLine(1, "<Stopien_walu>") srednica = wsk_kolekcji.srednica_stopnia PrintLine(1, " <Srednica_stopnia>" & srednica.tostring & _ "</Srednica_stopnia>") dlugosc = wsk_kolekcji.dlugosc_stopnia PrintLine(1, " <Dlugosc_stopnia>" & dlugosc.tostring & _ "</Dlugosc_stopnia>") faza = wsk_kolekcji.faza Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 7

PrintLine(1, " <Faza>" & faza.tostring & "</Faza>") modyfikacja_stopnia = wsk_kolekcji.modyfikacja_stopnia PrintLine(1, " <Modyfikacja_stopnia>" & modyfikacja_stopnia & _ "</Modyfikacja_stopnia>") PrintLine(1, "</Stopien_walu>") Next PrintLine(1, "</Walek>") FileClose(1) MsgBox("Zapisano do pliku " & plik) Private Sub WałekCzytajToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles WałekCzytajToolStripMenuItem.Click ' Odczyt całego wałka tekstowo Dim plik, srednica, dlugosc, faza, modyfikacja_stopnia, znak, wiersz As String Dim pozycja_znaku As Integer plik = "Dane_walka.xml" FileOpen(1, plik, OpenMode.Input) Liczba_stopni = 0 Do While Not EOF(1) 'czytamy do końca pliku wiersz = LineInput(1) 'czytamy wiersz If Mid(wiersz, 1, 14) = "<Stopien_walu>" Then 'szukamy <Stopien_walu> 'jeśli odczytaliśmy ten wiersz, to następnym wierszem jest np.: ' <Srednica_stopnia>224</Srednica_stopnia> '12345678901234567890 wiersz = LineInput(1) srednica = "" pozycja_znaku = 21 'na tej pozycji leży pierwsza cyfra średnicy Do While znak <> "<" srednica = srednica & znak pozycja_znaku = pozycja_znaku + 1 ' teraz będzie długość: ' <Dlugosc_stopnia>54</Dlugosc_stopnia> '1234567890123456789 wiersz = LineInput(1) dlugosc = "" pozycja_znaku = 20 'na tej pozycji leży pierwsza cyfra długości Do While znak <> "<" dlugosc = dlugosc & znak pozycja_znaku = pozycja_znaku + 1 ' teraz będzie faza: ' <Faza>0</Faza> '12345678 wiersz = LineInput(1) faza = "" pozycja_znaku = 9 'na tej pozycji keży pierwsza cyfra fazy Do While znak <> "<" faza = faza & znak pozycja_znaku = pozycja_znaku + 1 Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 8

' teraz będzie modyfikacja_stopnia: ' <Modyfikacja_stopnia>Pret</Modyfikacja_stopnia> '12345678901234567890123 wiersz = LineInput(1) modyfikacja_stopnia = "" pozycja_znaku = 24 'na tej pozycji leży pierwszy znak modyfikacji Do While znak <> "<" modyfikacja_stopnia = modyfikacja_stopnia & znak pozycja_znaku = pozycja_znaku + 1 Dim mojstopien As New Stopien_walu_parametry mojstopien.dlugosc_stopnia = CSng(dlugosc) mojstopien.srednica_stopnia = CSng(srednica) mojstopien.faza = CSng(faza) mojstopien.modyfikacja_stopnia = modyfikacja_stopnia Kolekcja_stopni_walu.Add(mojStopien) Liczba_stopni = Liczba_stopni + 1 FileClose(1) Call Narysuj() Private Sub ZapiszKolekcjęToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ZapiszKolekcjęToolStripMenuItem.Click 'Zapisywanie kolekcji - każdy stopień w oddzielnym pliku Dim mojstopien As New Stopien_walu_parametry Dim i As Integer Dim NazwaPliku As String Dim SerializacjadoPlikuXml As Serialization.XmlSerializer For i = 1 To Liczba_stopni mojstopien = Kolekcja_stopni_walu.Item(i) NazwaPliku = "Dane_stopnia_kolekcji" & i.tostring & ".xml" Dim plikxml As FileStream = New FileStream(NazwaPliku, FileMode.Create, _ FileAccess.Write, FileShare.None) SerializacjadoPlikuXml = _ New Serialization.XmlSerializer(GetType(Stopien_walu_parametry)) SerializacjadoPlikuXml.Serialize(plikXml, mojstopien) plikxml.close() Next MsgBox("Wałek - Kolekcja stopni został zapisany.") Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 9

Private Sub CzytajKolekcjęToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles CzytajKolekcjęToolStripMenuItem.Click 'Odczyt kolekcji z wielu plików stopni. Dim i As Integer Dim NazwaPliku As String Liczba_stopni = 0 i = 1 Do Dim mojstopien As New Stopien_walu_parametry NazwaPliku = "Dane_stopnia_kolekcji" & i.tostring & ".xml" If Not File.Exists(NazwaPliku) Then MsgBox("Liczba wczytanych stopni = " & Liczba_stopni) Exit Do Dim PlikDanych As FileStream = File.Open(NazwaPliku, FileMode.Open, _ FileAccess.Read) Dim mojaserializacja As New _ Serialization.XmlSerializer(GetType(Stopien_walu_parametry)) mojstopien = mojaserializacja.deserialize(plikdanych) PlikDanych.Close() File.Delete(NazwaPliku) Kolekcja_stopni_walu.Add(mojStopien) Liczba_stopni = Liczba_stopni + 1 i = i + 1 Call Narysuj() Copyright 2016, mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 10