private void NextButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (FCB.IorO() == IOState.IO)
                {
                    FCB.updateRecCancel();
                }
                //FCB.seekRec(1, 1);
                //CurrentSector++;
                BackButton.IsEnabled = true;

                if (GoToIntegerUpDown.Value >= FCB.GetFileDescription().EofRecNr)
                {
                    NextButton.IsEnabled = false;
                }
                GoToIntegerUpDown.Value++;
                GoTo();
            }
            catch (Exception exp)
            {
                ErrorHandling.ShowError(exp.Message);
                NextButton.IsEnabled = false;
            }
        }
        private void ReadRecord()
        {
            ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).ClearFields();

            if (GoToIntegerUpDown.Value != FCB.GetFileDescription().EofRecNr)
            {
                switch (FCB.IorO())
                {
                case IOState.IO:
                    if (IsStore())
                    {
                        Store temp = new Store();
                        FCB.readRec(temp, 1);
                        ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).Record = temp;
                    }
                    else if (IsProduct())
                    {
                        Product temp = new Product();
                        FCB.readRec(temp, 1);
                        ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).Record = temp;
                    }
                    else if (IsEmployee())
                    {
                        Employee temp = new Employee();
                        FCB.readRec(temp, 1);
                        ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).Record = temp;
                    }
                    break;

                case IOState.O:
                    if (IsStore())
                    {
                        Store temp = new Store();
                        FCB.readRec(temp);
                        ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).Record = temp;
                    }
                    else if (IsProduct())
                    {
                        Product temp = new Product();
                        FCB.readRec(temp);
                        ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).Record = temp;
                    }
                    else if (IsEmployee())
                    {
                        Employee temp = new Employee();
                        FCB.readRec(temp);
                        ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).Record = temp;
                    }
                    break;

                default:
                    throw new Exception("Unknown format to read/write from file.");
                }
            }
        }
        public RecordsWindow(FCB fcb)
        {
            try
            {
                InitializeComponent();
                FCB = fcb;
                InitRecordFields();
                InitAvailableButtons();

                CurrentRecordNumber = 0;
                InitData();
                MaxRecord = (int)FCB.GetFileDescription().FileSize *(1020 / (int)FCB.GetFileDescription().MaxRecSize);
                GoToIntegerUpDown.Maximum = MaxRecord;
            }
            catch (Exception exp)
            {
                ErrorHandling.ShowError(exp.Message);
                this.Close();
            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            try
            {
                int structSize = Marshal.SizeOf(typeof(VolumeHeader));
                Console.WriteLine("Marshal.SizeOf(typeof(VolumeHeader) == " + structSize);

                Disk d = new Disk();
                Console.WriteLine("\nMake Disk:");
                Console.WriteLine(ToStringProperty(d.GetVolumeHeader()));

                d.Createdisk("disk1", "oshri");
                Console.WriteLine("\nCreate Disk:");
                Console.WriteLine(ToStringProperty(d.GetVolumeHeader()));
                d.Mountdisk("disk1");
                if (d.Ismounted(d.myDiskPointer))
                {
                    Console.WriteLine("Mounted!");
                }
                d.Createfile("f1", "meir", "F", Store.size(), 50, "I", 0);

                FCB fcb = d.Openfile("f1", "meir", "IO");
                fcb.seekRec(0, (int)fcb.GetFileDescription().FileAddr - 4 + 20);
                Store str  = new Store("", "", "", "");
                Store str2 = new Store("", "", "", "");
                fcb.readRec(str, 1);
                str = new Store("123", "aaa", "aaa", "aaa");
                fcb.updateRec(str);
                fcb.seekRec(1, -1);
                fcb.readRec(str2, 0);
                fcb.Closefile();

                DirEntry newdir = d.GetDirEntry(0);
                d.Format("oshri");
                Console.WriteLine("\nFormat Disk:");
                Console.WriteLine(ToStringProperty(d.GetVolumeHeader()));
                d.Unmountdisk(d.myDiskPointer);
                if (d.Ismounted(d.myDiskPointer))
                {
                    Console.WriteLine("Mounted!");
                }
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(e.Message);
                Console.ResetColor();
            }
        }
        private void LastButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (FCB.IorO() == IOState.IO)
                {
                    FCB.updateRecCancel();
                }
                //FCB.seekRec(0, (int)FCB.GetFileDescription().FileAddr - 4 + (int)FCB.GetFileDescription().EofRecNr - 1);
                //               FCB.seekRec(0, (int)FCB.GetFileDescription().EofRecNr - 1);
                GoToIntegerUpDown.Value = (int)FCB.GetFileDescription().EofRecNr;

                GoTo();
                NextButton.IsEnabled = false;
                BackButton.IsEnabled = true;
            }
            catch (Exception exp)
            {
                ErrorHandling.ShowError(exp.Message);
            }
        }
        private void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                IRecord rec = ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).Record;
                if (CurrentRecordNumber == FCB.GetFileDescription().EofRecNr)
                {
                    FCB.writeRec(rec);
                }
                else
                {
                    FCB.updateRec(rec);
                }
                ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).ClearFields();
                BackButton.IsEnabled = true;
                MessageBox.Show("Record Saved", "Info", MessageBoxButton.OK, MessageBoxImage.Information);

                //CurrentSector++;

                //if (CurrentSector > FCB.GetFileDescription().EofRecNr || CurrentSector < 0)
                //{
                //    //FCB.seekRec(0,0);
                //    //CurrentSector = 0;
                //    ((IRecordUserControl)RecordDetailsStackPanel.Children[0]).ClearFields();

                //    BackButton.IsEnabled = false;
                //    NextButton.IsEnabled = true;
                //}
                GoToIntegerUpDown.Value++;
                GoTo();
                //ReadRecord();
            }
            catch (Exception exp)
            {
                ErrorHandling.ShowError(exp.Message);
            }
        }
 private bool IsEmployee()
 {
     return(FCB.GetFileDescription().ActualRecSize == Employee.size());
 }
 private bool IsStore()
 {
     return(FCB.GetFileDescription().ActualRecSize == Store.size());
 }
 private bool IsProduct()
 {
     return(FCB.GetFileDescription().ActualRecSize == Product.size());
 }