Исправление ошибок в коде С# - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем.Я переделываю прогу с С++ на С#.Программа находит текстовый файл,который указывает на БД и считывает путь к базе и адрес SQL-server.Код проги на С++:
bool CTestDBApp::GetPathGredBaseFromFile(CString& Path,CString& kdb)
{
    CStdioFile f;
    CString s,strDBMS,FileName = m_szMainDir;
    FileName += _T("\\BaseName.txt");
    int i,len;
    strDBMS.Empty();
//  Проверяем наличие файла
    if ( GetFileAttributes(FileName) == 0xffffffff ) 
    {  
        Path = "s:\\Systel\\Bin\\" ; 
        kdb.Empty();
    }
    else if( !f.Open( FileName, CFile::modeRead ) ) 
    {  
        AfxMessageBox(_T("Не могу открыть файл ") + FileName + _T(" !"),MB_OK);
        return false;
    }
    else
    {
        if (f.ReadString(Path)) 
        {
            if (Path.Right(4) == _T(".mdb") ) 
            {
                s = LastName(Path);
                i = s.GetLength();
                len = Path.GetLength();
                s = Path.Left(len-i);
                Path = s;
            }
            if (f.ReadString(kdb)) f.ReadString(strDBMS);
        }
        f.Close();
    }
    if (Path[1] == ':') m_DISK = Path[0];
    if (strDBMS.IsEmpty()) m_nModeDBMS = 0;
    else if (strDBMS[0] == 'A' ) m_nModeDBMS = 0;
    else if (strDBMS[0] == 'S' ) 
    {
        i = strDBMS.Find(_T("="));
        if (i < 0) 
        {   
            AfxMessageBox(_T("Не задан SQL Server !"),MB_OK);
            return false;
        }
        len = strDBMS.GetLength();
        while ( ++i < len && isspace(strDBMS[i]) ) ;
        if (i == len) 
        {   
            AfxMessageBox(_T("Не задан SQL Server !"),MB_OK);
            return false;
        }
        m_SystelSQL = strDBMS.Right(len-i);
        m_nModeDBMS = 1;
    }
    return true;
}
Так как я совсем еще "зеленый" новичок в С#, то не могу понять как правильно переделать код.Буду очень признательна за помощь и коменты к ошибкам.Вот мой "переделанный" код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;
using System.Text;
 
namespace Read
{
   static class Reader
    {
        [STAThread]
         static void Main()
        {
            
            FileStream fstream;
            String kdb, s, SystelSQL, Disk, Path, Name, strDBMS;
            int i, len, NModeDBMS;
            strDBMS = "";
            Name = Application.StartupPath + "\\BaseName.txt";
           
            //Проверяем наличие файла
            if (!File.Exists(Name))
            {
                MessageBox.Show("Не могу открыть файл");
              
            }
            else if  (File.Exists(Name))
            {
                Path = "s:\\Systel\\Bin\\";
                kdb = "";
                
            }
 
            else
            {
                fstream = new FileStream(Name, FileMode.Open, FileAccess.Read); 
                if (fstream.[COLOR="#ff0000"]Read[/COLOR](Path))
                {
                    if (fstream.[COLOR="#ff0000"]Read[/COLOR](kdb)) fstream.[COLOR="#ff0000"]Read[/COLOR](strDBMS);     //[B]Тут не знаю как сделать так,чтобы из текстового файла к kdb присваивалось значение 2 строки,а к strDBMS 3 строки[/B]
                }
                fstream.Close();
            }
            if (Path[1] == ':') [COLOR="#ff0000"]Path[0] = Disk[/COLOR];//здесь пишет что не возможно конвертировать String to Char
            if (strDBMS= "") NModeDBMS = 0;// тоже самое
            else if (strDBMS[0] == 'A') NModeDBMS = 0;
            else if (strDBMS[0] == 'S')
            {
                i = s[COLOR="#ff0000"]trDBMS.Insert("=")[/COLOR];//здесь хотела сделать проверку на наличие адреса SQL Server
                
                if (i < 0)
                {
                    MessageBox.Show("Не задан SQL Server!");
                  
                }
                len = strDBMS.[COLOR="#ff0000"]Length()[/COLOR];//не хочет длину строки считать
                while (++i < len);
                if (i == len)
                {
                    MessageBox.Show("Не задан SQL Server!");
                    
                }
                
                SystelSQL = strDBMS.[COLOR="#ff0000"]Contains[/COLOR](len-i);//не знаю какой метод тут правильней использовать
                NModeDBMS = 1;
            }
          
        }
    }
}

Решение задачи: «Исправление ошибок в коде С#»

textual
Листинг программы
if(strDBMS[0]=='A')
{
///
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы