Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 20:36   #1
AndreyF
Пользователь
 
Регистрация: 15.10.2008
Сообщений: 44
По умолчанию с delphi на c#

Всем привет!
Ребята, кому не трудно помогите перегнать рабочий код с delphi на c#. На delphi написал за 30 минут, а вот на c# уже полдня сижу и результата нет.
Смысл программы - надо данные с одного файлика перегнать в другой при этом изменить кодировку. Я только что скачал саму программу c# так что строго не судите.
Код:
function DosToWin(s:AnsiString):string;//из 866 в 1251
begin
   SetLength(result,Length(s));
   s:=s+#0;
   if not OemToChar(PAnsiChar(s),PWideChar(result)) then SetLength(result,0);
end;

var tin,tout:TStringList;
begin
   if DirectoryExists(ExtractFilePath(ParamStr(0))+'exittemp')=False then CreateDir(ExtractFilePath(ParamStr(0))+'exittemp');
   tin:=TStringList.Create;
   tout:=TStringList.Create;
   tin.LoadFromFile(ExtractFilePath(Paramstr(0))+'intemp\1.text');
   for i:=0 to tin.Count-1 do tout.Add(DosToWin(tin.Strings[i]));
   if FileExists(ExtractFilePath(ParamStr(0))+'exittemp\1.txt') then DeleteFile(ExtractFilePath(ParamStr(0))+'exittemp\1.txt');
   tout.SaveToFile(ExtractFilePath(Paramstr(0))+'exittemp\1.txt');
   tin.Free;
   tout.Free;
end;
Код:
if (!System.IO.Directory.Exists(System.IO.Directory.GetCurrentDirectory+"exittemp"))//здесь пишет оператор + не может применяться к операндам группа методов и string, если прописать путь так "c:\\exittemp" то всё нормально, но нужно из текущей директории
{
   System.IO.Directory.CreateDirectory(System.IO.Directory.GetCurrentDirectory+"exittemp");
}
System.IO.File.CreateText(System.IO.Directory.GetCurrentDirectory+"exittemp\\1.txt");//создаём файл
System.IO.StreamReader f_in = System.IO.File.OpenText(System.IO.Directory.GetCurrentDirectory+"intemp\\1.txt");            
string s = null;
while ((s = f_in.ReadLine()) != null)
{
   //здесь построчно нужно менять кодировку и записывать в файл "exittemp\\1.txt"; 
}
//string[] s_in=System.IO.File.ReadAllLines("c:\\intemp\\1.temp");//сразу весь текст из файла записывается в переменную
MessageBox.Show("готово");
AndreyF вне форума Ответить с цитированием
Старый 19.04.2011, 22:38   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
//здесь построчно нужно менять кодировку и записывать в файл "exittemp\\1.txt";
Зачем????!!!!
вот. всего две строчки:
Код:
            string text = System.IO.File.ReadAllText(System.IO.Directory.GetCurrentDirectory()+"\\intemp\\1.txt",
                                                      System.Text.Encoding.GetEncoding(866));
            // Console.WriteLine(text);
            System.IO.File.WriteAllText(System.IO.Directory.GetCurrentDirectory()+"\\exittemp\\1.txt",
                                        text, System.Text.Encoding.GetEncoding(1251));
p.s. разумеется, входной файл должен существовать и быть доступен для чтения.
и выходной каталог тоже должен существовать и быть доступен для записи.
Ну, тут я думаю, что Вы сами разберётесь с функциями проверки, что файл и выходная директория существуют..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.04.2011, 06:01   #3
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Вот решил не плодить лишние посты, а задать вопрос по теме заголовка.
В Delphi есть очень нужный и очень удобный компонент TFormStorage. Кто не знает - он сохраняет параметры формы и её компонентов в ini-файл или реестр. Недавно мне пришлось осваивать C# (работаю в MS Visual Studio 2010). И я к своему удивлению не обнаружил подобного удобства. Т.е., конечно можно сохранить настройки в конфиг. файле приложения, или сереализовать спецально созданный класс, но это долго и негибко, т.к. для сохранения и загрузки каждого из требуемых свойств требуется писать 7-8 строк кода (в лучшем случае).
Хотелось бы узнать, есть ли в C# такой же удобный и быстрый механизм сохранения свойств формы, как и в Delphi?
Greek9000 вне форума Ответить с цитированием
Старый 20.04.2011, 07:22   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

М-м-м, Вам стоит посмотреть в Википедии определение термина XAML...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.04.2011, 10:07   #5
AndreyF
Пользователь
 
Регистрация: 15.10.2008
Сообщений: 44
По умолчанию

большое спасибо за помощь, действительно краткость сетсра таланта.
Код:
string text= System.IO.File.ReadAllText(System.IO.Directory.GetCurrentDirectory()+"\\intemp\\1.txt", System.Text.Encoding.GetEncoding(866));
System.IO.File.WriteAllText(System.IO.Directory.GetCurrentDirectory()+"\\exittemp\\1.txt",text, System.Text.Encoding.GetEncoding("windows-1251"));
эта ошибка
Цитата:
//здесь пишет оператор + не может применяться к операндам группа методов и string
возникала потому что не было скобок Directory.GetCurrentDirectory()
AndreyF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27