Исправление ошибок в коде С# - 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')
{
///
}