Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Перевод с delphi на C#

Ответить
Настройки темы
.NET - Перевод с delphi на C#

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: bauerA
Дата: 01-04-2012
Прошу помочь с переводом следующих фрагментов кода, т.к. с delphi более или менее знаком, а с С# только начинаю:

unit StData;

interface

uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls, Contnrs, CodeUnit;

type
TStQuestion = class
private
FActive: boolean;
FText: string;
public
StAnswerList: TObjectList;

constructor Create;
property Active: boolean read FActive write FActive;
property Text: string read FText write FText;
end;

TStAnswer = class
private
FRight: Boolean;
FStQuestion: TStQuestion;
FText: string;
public
property Right: Boolean read FRight write FRight;
property StQuestion: TStQuestion read FStQuestion write FStQuestion;
property Text: string read FText write FText;
end;

TStTest = class(TObject)
private
FQCount: Integer;
FText: string;
public
property Text: string read FText write FText;
property QCount: Integer read FQCount write FQCount;
end;

TStData = class(TObject)
private
FStQuestionList: TObjectList;
FStTest: TStTest;
XMLDocument: IXMLDocument;
FFileName: string;

procedure LoadData;
public
procedure Load(setFileName: string);
procedure LoadFromXml(XMLStr: string);
procedure LoadEmpty;
procedure Save;

procedure AppendQuestion( newQuestion: TStQuestion );
procedure DeleteQuestion( delQuestion: TStQuestion );

class function GetInstance: TStData;

property FileName: string read FFileName write FFileName;
property StQuestionList: TObjectList read FStQuestionList;
property StTest: TStTest read FStTest;
strict private
constructor Create;
strict private
class var FInstance: TStData;
end;

implementation

constructor TStQuestion.Create;
begin
StAnswerList := TObjectList.Create;
end;

constructor TStData.Create;
begin
XMLDocument := TXMLDocument.Create( nil );
FStQuestionList := TObjectList.Create;
FStTest := TStTest.Create;
LoadEmpty;
end;

procedure TStData.Load(setFileName: string);
begin
FFileName := setFileName;
XMLDocument.LoadFromXml( TStEncode.GetFile(setFileName) );
LoadData;
end;

procedure TStData.LoadFromXml(XMLStr: string);
begin
XMLDocument.LoadFromXML( XMLStr );
LoadData;
end;

procedure TStData.LoadEmpty;
const
DEFAULT_HEADER = '<?xml version="1.0" encoding="UTF-8"?>' +
'<test text="" qcount="0"></test>';
begin
XMLDocument.LoadFromXML( DEFAULT_HEADER );
LoadData;
FFileName := '';
end;

procedure TStData.AppendQuestion( newQuestion: TStQuestion );
begin
FStQuestionList.Add( newQuestion );
end;

procedure TStData.DeleteQuestion( delQuestion: TStQuestion );
begin
FStQuestionList.Remove( delQuestion );
end;

class function TStData.GetInstance: TStData;
begin
if FInstance = nil then
begin
FInstance := TStData.Create;
end;
Result := FInstance;
end;

procedure TStData.LoadData;
var
i, j: integer;
tmpQuestion: TStQuestion;
tmpAnswer: TStAnswer;

Root: IXMLNode;
Node: IXMLNode;
begin
FStQuestionList.Clear;
Root := XMLDocument.DocumentElement;

FStTest.Text := Root.Attributes['text'];
FStTest.QCount := StrToInt( Root.Attributes['qcount'] );
for i := 0 to Root.ChildNodes.Count - 1 do
begin
tmpQuestion := TStQuestion.Create;
tmpQuestion.Text := Root.ChildNodes[i].Attributes['text'];
tmpQuestion.Active := StrToBool( Root.ChildNodes[i].Attributes['active'] );

Node := Root.ChildNodes[i];
for j := 0 to Node.ChildNodes.Count - 1 do
begin
tmpAnswer := TStAnswer.Create;
tmpAnswer.StQuestion := tmpQuestion;
tmpAnswer.Right := StrToBool( Node.ChildNodes[j].Attributes['right'] );
tmpAnswer.Text := Node.ChildNodes[j].Attributes['text'];

tmpQuestion.StAnswerList.Add( tmpAnswer );
end;

FStQuestionList.Add( tmpQuestion );
end;
end;

procedure TStData.Save;
var
List: TObjectList;
i, j: integer;
tmpAnswer: TStAnswer;

Root: IXMLNode;
Node: IXMLNode;
NodeAns: IXMLNode;

XMlStr: string;
begin
List := FStQuestionList;

Root := XMLDocument.DocumentElement;
Root.Attributes['text'] := StTest.Text;
Root.Attributes['qcount'] := IntToStr(StTest.QCount);
Root.ChildNodes.Clear;

for i := 0 to List.Count - 1 do
begin
Node := Root.AddChild( 'question' );
Node.Attributes['text'] := TStQuestion( List.Items[i] ).Text;
Node.Attributes['active'] := TStQuestion( List.Items[i] ).Active;

for j := 0 to TStQuestion( List.Items[i] ).StAnswerList.Count - 1 do
begin
tmpAnswer := TStAnswer( TStQuestion( List.Items[i] ).StAnswerList.Items[j] );
NodeAns := Node.AddChild( 'answer' );
NodeAns.Attributes['right'] := BoolToStr( tmpAnswer.Right, true );
NodeAns.Attributes['text'] := tmpAnswer.Text;
end;

end;

XMLDocument.SaveToXML( XMlStr );
TStEncode.SaveFile( XMlStr, FFileName );
end;


end.

-------
Alex


Отправлено: 13:31, 01-04-2012

 

Аватара для ViRTaCe

Пользователь


Сообщения: 139
Благодарности: 11

Профиль | Отправить PM | Цитировать


И ты планируешь, что тебе тут все напишут?

-------
Кривые руки исправляются опытом.


Отправлено: 14:25, 01-04-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Хотя бы вот эти две строки:
constructor Create;
property Active: boolean read FActive write FActive;
с остальным я разобрался.

-------
Alex


Отправлено: 15:44, 01-04-2012 | #3


Аватара для ViRTaCe

Пользователь


Сообщения: 139
Благодарности: 11

Профиль | Отправить PM | Цитировать


Ну насколько я понимаю, здесь описан конструктор и свойство.

-------
Кривые руки исправляются опытом.


Отправлено: 21:41, 01-04-2012 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот с этими строками у меня проблемы. не знаю как их написать на С#.

-------
Alex


Отправлено: 22:02, 01-04-2012 | #5


Аватара для ViRTaCe

Пользователь


Сообщения: 139
Благодарности: 11

Профиль | Отправить PM | Цитировать


Ну если класс у тебя называется Create, то конструктор этого класса будет писать так
Код: Выделить весь код
public Create()
{
//Тут нужные инициализации при создании объекта
}
Насчет второго в шарпе есть такая штука, называется она - автосвойства. Благодаря этой штуке второе будет описываться так
Код: Выделить весь код
bool FActive { get; set; }

-------
Кривые руки исправляются опытом.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:13, 01-04-2012 | #6


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо

-------
Alex


Отправлено: 22:37, 01-04-2012 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Перевод с delphi на C#

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Перевод с Pascal на C++ Snake750 Программирование и базы данных 14 14-09-2015 04:48
C/C++ - Перевод с Pascal на C++ Ru1nN Программирование и базы данных 0 21-12-2011 22:45
Перевод сайта EN->RU timon4ik Программное обеспечение Windows 6 20-09-2006 09:07
Интерактивный перевод Ser6720 Хочу все знать 3 16-06-2006 19:14
Delphi - Delphi | UpperCase на Delphi 7 Cognolio Программирование и базы данных 3 26-01-2006 15:42




 
Переход