Исправление ошибок в коде С# - 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') { /// }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д