Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Вниз

Ода молодому поколению   Найти похожие ветки 

 
TUser ©   (2011-09-05 16:24) [40]

ха

unit uOutputSettings;

interface

var
 output_format_xml: boolean = false;
 output_printmaps: boolean = false;
 output_printmaps_html: boolean = false;
 output_printmaps_show_sides: boolean = false;
 output_printmaps_show_sides_use_cb_sides: boolean = false;
 output_printmaps_printoutofmap: boolean = false;
 output_printmaps_hbonds: boolean = false;
 output_printmaps_pbonds: boolean = false;
 output_printmaps_pairs: boolean = false;
 output_script: boolean = false;
 output_script_load: boolean = false;
 output_script_define: boolean = false;
 output_script_define_define_ifneed: boolean = false;
 output_script_define_sheets: boolean = false;
 output_script_define_helixes: boolean = false;
 output_script_define_alpha_layers: boolean = false;
 output_script_define_str: boolean = false;
 output_script_define_sse: boolean = false;
 output_script_define_map: boolean = false;
 output_script_define_crests: boolean = false;
 output_script_define_ca_sides: boolean = false;
 output_script_define_cb_sides: boolean = false;
 output_script_define_pairs: boolean = false;
 output_script_define_hbonds: boolean = false;
 output_script_define_sse_contacts: boolean = false;
 output_script_define_sse_contacts_shsh_contacts: boolean = false;
 output_script_define_sse_contacts_shhel_contacts: boolean = false;
 output_script_define_sse_contacts_shalay_contacts: boolean = false;
 output_script_define_sse_contacts_helhel_contacts: boolean = false;
 output_script_define_architects: boolean = false;
 output_script_define_architects_bprism: boolean = false;
 output_script_define_architects_bprop: boolean = false;
 output_script_define_architects_sandw2_par: boolean = false;
 output_script_define_architects_sandw2_cross: boolean = false;
 output_script_define_architects_sandw2_unk: boolean = false;
 output_script_define_architects_sandw_bigmac: boolean = false;
 output_script_define_architects_single_barrel: boolean = false;
 output_script_define_architects_ab_sandw: boolean = false;
 output_script_define_architects_rossmann: boolean = false;
 output_script_define_architects_ab_barrel: boolean = false;
 output_script_define_architects_gfp_barrel: boolean = false;
 output_script_define_architects_aba_barrel: boolean = false;
 output_script_define_architects_single_sheet: boolean = false;
 output_script_define_motifs: boolean = false;
 output_script_define_motifs_jelly: boolean = false;
 output_script_define_motifs_inter: boolean = false;
 output_script_define_motifs_jelly_hp: boolean = false;
 output_script_define_motifs_jelly_gk: boolean = false;
 output_script_define_motifs_meander: boolean = false;
 output_script_define_motifs_hairpin: boolean = false;
 output_script_define_motifs_bab_helix: boolean = false;
 output_script_define_motifs_bab: boolean = false;
 output_script_define_motifs_gk: boolean = false;
 output_script_define_motifs_betahel: boolean = false;
 output_script_view: boolean = false;
 output_script_view_sheets: boolean = false;
 output_script_view_helixes: boolean = false;
 output_script_view_alpha_layers: boolean = false;
 output_script_view_str: boolean = false;
 output_script_view_sse: boolean = false;
 output_script_view_map: boolean = false;
 output_script_view_crests: boolean = false;
 output_script_view_ca_sides: boolean = false;
 output_script_view_cb_sides: boolean = false;
 output_script_view_pairs: boolean = false;
 output_script_view_hbonds: boolean = false;
 output_script_view_sse_contacts: boolean = false;
 output_script_view_sse_contacts_shsh_contacts: boolean = false;
 output_script_view_sse_contacts_shhel_contacts: boolean = false;
 output_script_view_sse_contacts_shalay_contacts: boolean = false;
 output_script_view_sse_contacts_helhel_contacts: boolean = false;
 output_script_view_architects: boolean = false;
 output_script_view_architects_bprism: boolean = false;
 output_script_view_architects_bprop: boolean = false;
 output_script_view_architects_sandw2_par: boolean = false;
 output_script_view_architects_sandw2_cross: boolean = false;
 output_script_view_architects_sandw2_unk: boolean = false;
 output_script_view_architects_sandw_bigmac: boolean = false;
 output_script_view_architects_single_barrel: boolean = false;
 output_script_view_architects_ab_sandw: boolean = false;
 output_script_view_architects_rossmann: boolean = false;
 output_script_view_architects_ab_barrel: boolean = false;
 output_script_view_architects_gfp_barrel: boolean = false;
 output_script_view_architects_aba_barrel: boolean = false;
 output_script_view_architects_single_sheet: boolean = false;
 output_script_view_motifs: boolean = false;
 output_script_view_motifs_jelly: boolean = false;
 output_script_view_motifs_inter: boolean = false;
 output_script_view_motifs_jelly_hp: boolean = false;
 output_script_view_motifs_jelly_gk: boolean = false;
 output_script_view_motifs_meander: boolean = false;
 output_script_view_motifs_hairpin: boolean = false;
 output_script_view_motifs_bab_helix: boolean = false;
 output_script_view_motifs_bab: boolean = false;
 output_script_view_motifs_gk: boolean = false;
 output_script_view_motifs_betahel: boolean = false;
 output_reports: boolean = false;
 output_reports_sheets: boolean = false;
 output_reports_helixes: boolean = false;
 output_reports_alpha_layers: boolean = false;
 output_reports_sse: boolean = false;
 output_reports_strands: boolean = false;
 output_reports_crests: boolean = false;
 output_reports_shsh_contacts: boolean = false;
 output_reports_shhel_contacts: boolean = false;
 output_reports_shalay_contacts: boolean = false;
 output_reports_helhel_contacts: boolean = false;
 output_reports_architects: boolean = false;
 output_reports_motifs: boolean = false;
 output_reports_multiple: boolean = false;
 output_reports_append: boolean = false;
 output_reports_html: boolean = false;

implementation
uses uXmlParser, uParams;

var Xml, NewXml: PXml;
   FileName: string;



 
TUser ©   (2011-09-05 16:24) [41]

initialization

 Xml := nil;
 FileName := "";
 if not GetNamedParamEx ("settings", FileName) then FileName := "proton_output_settings.xml";
 ReadXml (Xml, FileName);
 NewXml := GetXmlItem (Xml, "output", true);
 Xml := NewXml;
 {$ifndef NOOUTPUTFORMATXML}
 NewXml := GetXmlItem (Xml, "format_xml", true);
 if NewXml <> nil then begin
 output_format_xml := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTPRINTMAPS}
 NewXml := GetXmlItem (Xml, "printmaps", true);
 if NewXml <> nil then begin
 output_printmaps := NewXml^.Value = "yes";
 Xml := NewXml;
 {$ifndef NOOUTPUTPRINTMAPSHTML}
 NewXml := GetXmlItem (Xml, "html", true);
 if NewXml <> nil then begin
 output_printmaps_html := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTPRINTMAPSSHOWSIDES}
 NewXml := GetXmlItem (Xml, "show_sides", true);
 if NewXml <> nil then begin
 output_printmaps_show_sides := NewXml^.Value = "yes";
 Xml := NewXml;
 {$ifndef NOOUTPUTPRINTMAPSSHOWSIDESUSECBSIDES}
 NewXml := GetXmlItem (Xml, "use_cb_sides", true);
 if NewXml <> nil then begin
 output_printmaps_show_sides_use_cb_sides := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTPRINTMAPSPRINTOUTOFMAP}
 NewXml := GetXmlItem (Xml, "printoutofmap", true);
 if NewXml <> nil then begin
 output_printmaps_printoutofmap := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTPRINTMAPSHBONDS}
 NewXml := GetXmlItem (Xml, "hbonds", true);
 if NewXml <> nil then begin
 output_printmaps_hbonds := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTPRINTMAPSPBONDS}
 NewXml := GetXmlItem (Xml, "pbonds", true);
 if NewXml <> nil then begin
 output_printmaps_pbonds := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTPRINTMAPSPAIRS}
 NewXml := GetXmlItem (Xml, "pairs", true);
 if NewXml <> nil then begin
 output_printmaps_pairs := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTSCRIPT}
 NewXml := GetXmlItem (Xml, "script", true);
 if NewXml <> nil then begin
 output_script := NewXml^.Value = "yes";
 Xml := NewXml;
 {$ifndef NOOUTPUTSCRIPTLOAD}
 NewXml := GetXmlItem (Xml, "load", true);
 if NewXml <> nil then begin
 output_script_load := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINE}
 NewXml := GetXmlItem (Xml, "define", true);
 if NewXml <> nil then begin
 output_script_define := NewXml^.Value = "yes";
 Xml := NewXml;
 {$ifndef NOOUTPUTSCRIPTDEFINEDEFINEIFNEED}
 NewXml := GetXmlItem (Xml, "define_ifneed", true);
 if NewXml <> nil then begin
 output_script_define_define_ifneed := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINESHEETS}
 NewXml := GetXmlItem (Xml, "sheets", true);
 if NewXml <> nil then begin
 output_script_define_sheets := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_sheets;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEHELIXES}
 NewXml := GetXmlItem (Xml, "helixes", true);
 if NewXml <> nil then begin
 output_script_define_helixes := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_helixes;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEALPHALAYERS}
 NewXml := GetXmlItem (Xml, "alpha_layers", true);
 if NewXml <> nil then begin
 output_script_define_alpha_layers := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_alpha_layers;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINESTR}
 NewXml := GetXmlItem (Xml, "str", true);
 if NewXml <> nil then begin
 output_script_define_str := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_str;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINESSE}
 NewXml := GetXmlItem (Xml, "sse", true);
 if NewXml <> nil then begin
 output_script_define_sse := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_sse;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEMAP}
 NewXml := GetXmlItem (Xml, "map", true);


 
TUser ©   (2011-09-05 16:25) [42]

 if NewXml <> nil then begin
 output_script_define_map := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_map;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINECRESTS}
 NewXml := GetXmlItem (Xml, "crests", true);
 if NewXml <> nil then begin
 output_script_define_crests := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_crests;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINECASIDES}
 NewXml := GetXmlItem (Xml, "ca_sides", true);
 if NewXml <> nil then begin
 output_script_define_ca_sides := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_ca_sides;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINECBSIDES}
 NewXml := GetXmlItem (Xml, "cb_sides", true);
 if NewXml <> nil then begin
 output_script_define_cb_sides := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_cb_sides;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEPAIRS}
 NewXml := GetXmlItem (Xml, "pairs", true);
 if NewXml <> nil then begin
 output_script_define_pairs := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_pairs;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEHBONDS}
 NewXml := GetXmlItem (Xml, "hbonds", true);
 if NewXml <> nil then begin
 output_script_define_hbonds := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_hbonds;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINESSECONTACTS}
 NewXml := GetXmlItem (Xml, "sse_contacts", true);
 if NewXml <> nil then begin
 output_script_define_sse_contacts := NewXml^.Value = "yes";
 Xml := NewXml;
 {$ifndef NOOUTPUTSCRIPTDEFINESSECONTACTSSHSHCONTACTS}
 NewXml := GetXmlItem (Xml, "shsh_contacts", true);
 if NewXml <> nil then begin
 output_script_define_sse_contacts_shsh_contacts := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_sse_contacts := output_script_define_sse_contacts or output_script_define_sse_contacts_shsh_contacts;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINESSECONTACTSSHHELCONTACTS}
 NewXml := GetXmlItem (Xml, "shhel_contacts", true);
 if NewXml <> nil then begin
 output_script_define_sse_contacts_shhel_contacts := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_sse_contacts := output_script_define_sse_contacts or output_script_define_sse_contacts_shhel_contacts;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINESSECONTACTSSHALAYCONTACTS}
 NewXml := GetXmlItem (Xml, "shalay_contacts", true);
 if NewXml <> nil then begin
 output_script_define_sse_contacts_shalay_contacts := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_sse_contacts := output_script_define_sse_contacts or output_script_define_sse_contacts_shalay_contacts;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINESSECONTACTSHELHELCONTACTS}
 NewXml := GetXmlItem (Xml, "helhel_contacts", true);
 if NewXml <> nil then begin
 output_script_define_sse_contacts_helhel_contacts := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_sse_contacts := output_script_define_sse_contacts or output_script_define_sse_contacts_helhel_contacts;
 {$endif}
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_sse_contacts;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTS}
 NewXml := GetXmlItem (Xml, "architects", true);
 if NewXml <> nil then begin
 output_script_define_architects := NewXml^.Value = "yes";
 Xml := NewXml;
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSBPRISM}
 NewXml := GetXmlItem (Xml, "bprism", true);
 if NewXml <> nil then begin
 output_script_define_architects_bprism := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_bprism;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSBPROP}
 NewXml := GetXmlItem (Xml, "bprop", true);
 if NewXml <> nil then begin
 output_script_define_architects_bprop := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_bprop;
 {$endif}


 
TUser ©   (2011-09-05 16:25) [43]

 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSSANDWPAR}
 NewXml := GetXmlItem (Xml, "sandw2_par", true);
 if NewXml <> nil then begin
 output_script_define_architects_sandw2_par := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_sandw2_par;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSSANDWCROSS}
 NewXml := GetXmlItem (Xml, "sandw2_cross", true);
 if NewXml <> nil then begin
 output_script_define_architects_sandw2_cross := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_sandw2_cross;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSSANDWUNK}
 NewXml := GetXmlItem (Xml, "sandw2_unk", true);
 if NewXml <> nil then begin
 output_script_define_architects_sandw2_unk := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_sandw2_unk;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSSANDWBIGMAC}
 NewXml := GetXmlItem (Xml, "sandw_bigmac", true);
 if NewXml <> nil then begin
 output_script_define_architects_sandw_bigmac := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_sandw_bigmac;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSSINGLEBARREL}
 NewXml := GetXmlItem (Xml, "single_barrel", true);
 if NewXml <> nil then begin
 output_script_define_architects_single_barrel := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_single_barrel;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSABSANDW}
 NewXml := GetXmlItem (Xml, "ab_sandw", true);
 if NewXml <> nil then begin
 output_script_define_architects_ab_sandw := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_ab_sandw;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSROSSMANN}
 NewXml := GetXmlItem (Xml, "rossmann", true);
 if NewXml <> nil then begin
 output_script_define_architects_rossmann := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_rossmann;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSABBARREL}
 NewXml := GetXmlItem (Xml, "ab_barrel", true);
 if NewXml <> nil then begin
 output_script_define_architects_ab_barrel := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_ab_barrel;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSGFPBARREL}
 NewXml := GetXmlItem (Xml, "gfp_barrel", true);
 if NewXml <> nil then begin
 output_script_define_architects_gfp_barrel := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_gfp_barrel;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSABABARREL}
 NewXml := GetXmlItem (Xml, "aba_barrel", true);
 if NewXml <> nil then begin
 output_script_define_architects_aba_barrel := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_aba_barrel;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEARCHITECTSSINGLESHEET}
 NewXml := GetXmlItem (Xml, "single_sheet", true);
 if NewXml <> nil then begin
 output_script_define_architects_single_sheet := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_architects := output_script_define_architects or output_script_define_architects_single_sheet;
 {$endif}
 Xml := Xml^.Parent;
 end;
 output_script_define := output_script_define or output_script_define_architects;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEMOTIFS}
 NewXml := GetXmlItem (Xml, "motifs", true);
 if NewXml <> nil then begin
 output_script_define_motifs := NewXml^.Value = "yes";
 Xml := NewXml;
 {$ifndef NOOUTPUTSCRIPTDEFINEMOTIFSJELLY}
 NewXml := GetXmlItem (Xml, "jelly", true);
 if NewXml <> nil then begin
 output_script_define_motifs_jelly := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_motifs := output_script_define_motifs or output_script_define_motifs_jelly;
 {$endif}
 {$ifndef NOOUTPUTSCRIPTDEFINEMOTIFSINTER}
 NewXml := GetXmlItem (Xml, "inter", true);
 if NewXml <> nil then begin
 output_script_define_motifs_inter := NewXml^.Value = "yes";
 Xml := NewXml;
 Xml := Xml^.Parent;
 end;
 output_script_define_motifs := output_script_define_motifs or output_script_define_motifs_inter;
 {$endif}


 
pasha_golub ©   (2011-09-05 16:26) [44]


> TUser ©   (05.09.11 16:25) [42]

И чего это должно собой ознаменовать? :)


 
TUser ©   (2011-09-05 16:26) [45]

+ еще примено столько же


 
Юрий Зотов ©   (2011-09-05 16:29) [46]

> pasha_golub ©   (05.09.11 16:06) [38]
> Какие будут предложения? Готов рассмотреть.

Написать модуль, содержащий полный набор арифметических функций для работы с целыми числами в любой системе счисления от 2 до 255 включительно. Число задается записью:
type
 TNumber = packed record
   Base: byte;   // Основание системы счисления
   Value: string // Строковое представление числа в этой системе
 end;

Например:
 function AddNumbers(X, Y: TNumber; OutBase: byte): string;
где
X и Y - числа, которые надо сложить;
OutBase - основание системы счисления результата;
Выход  - строковое представление результата.

Полый набор - это AddNumbers, SubtractNumbers, MultiplyNumbers, DivNumbers, ModNumbers, ReadNumber (с консоли), WriteNumber (на консоль), ConvertNumber (перевод из одной системы счисления в другую).

Мой подопечный когда-то делал такой курсовик, еще на 1-м курсе. Не без помощи, но все же справился.


 
pasha_golub ©   (2011-09-05 16:35) [47]


> Юрий Зотов ©   (05.09.11 16:29) [46]

Мощно. Однако для тестового задания...


 
Kerk ©   (2011-09-05 16:43) [48]


> pasha_golub ©   (05.09.11 16:35) [47]

Как раз уровень первого курса.


 
Юрий Зотов ©   (2011-09-05 17:13) [49]


> pasha_golub ©   (05.09.11 16:35) [47]

Надо написать ConvertNumber, после чего все становится очень просто.

Но ты ему об этом не говори, пусть сам догадается.
:o)


 
Mystic ©   (2011-09-05 17:19) [50]

> pasha_golub ©   (05.09.11 10:22) 

Теперь логично попросить его исходники кодогенератора, которым создавался исходник


 
Eraser ©   (2011-09-05 17:43) [51]

>
>
> [0] pasha_golub ©   (05.09.11 10:22)

зачем кого-то растить? ) дать задание, если не справился или бесперспективный - выгнать. нанять следующего. 1 из 10 подходящий найдется. нужно, чтобы работник сам был заинтересован сделать как надо, а не делал одолжения.


 
Ega23 ©   (2011-09-05 18:22) [52]


> TUser ©   (05.09.11 16:24) [40]
>
> ха
>


У меня такой файл был. Генерился на основании НД из БД. Константы там всякие, ГУИДы.


 
DVM ©   (2011-09-05 18:45) [53]


> pasha_golub ©   (05.09.11 16:06) [38]


> Какие будут предложения? Готов рассмотреть.

Зависит от того, что должен уметь кандидат. Что от него требуется то?


 
pasha_golub ©   (2011-09-05 19:03) [54]


> Mystic ©   (05.09.11 17:19) [50]
>
> Теперь логично попросить его исходники кодогенератора, которым
> создавался исходник

Сам об этом думал :))


> DVM ©   (05.09.11 18:45) [53]
>
>


> Зависит от того, что должен уметь кандидат. Что от него
> требуется то?

Базовые знания. Чтобы видно было, что голова светлая.


 
Mystic ©   (2011-09-05 19:40) [55]


> pasha_golub ©   (05.09.11 19:03) [54]



> Сам об этом думал :))


На одной из работ я слышал байку о сотруднике, который в аналогичном ключе клепал SQL-запросы. При этом служба поддержки Oracle на вопросы про оптимизации его запросоы вежливо просила уточнить, какой генератор запросов использовался.


 
Очень злой   (2011-09-05 23:22) [56]


> Да я б его озолотил за усидчивость и упертость, была б моя
> воля. :) Это ж надо было 50 хендлеров написать.


Да там в основном копипаст. Наверное написал один раз, скопировал, 49 раз вставил и потом прошелся циферки подправил..


> Ну и дал одному перспективному задание: написать MineSweeper
> 5х5

ну вот он и написал его...
В следующий раз лучше в задании указывать не 5х5, а что-то побольше, чтобы убить стремление писать таким методом... Ну или лучше всего это когда размер поля должен определяться игроком.


 
Inovet ©   (2011-09-05 23:54) [57]

> [56] Очень злой   (05.09.11 23:22)
> лучше всего это когда размер поля должен определяться игроком.

На каждый размер будет скопипастен код 5х5 и скопипастены дополнительные строчки.


 
Очень злой   (2011-09-06 00:00) [58]


> На каждый размер будет скопипастен код 5х5 и скопипастены
> дополнительные строчки.


размер от 5*5 до 40*40 уже предполагает 1296 вариантов (36*36)
Если человек решиться написать типа сабж, но в 1000+ раз длиннее, то может ему походу все-таки стукнет мысль, что он что-то не то делает...


 
Sha ©   (2011-09-06 00:06) [59]

> Юрий Зотов ©   (05.09.11 16:29) [46]

ReadNumber, WriteNumber для чисел в 255-ричной системе прикольно выглядели наверно?


 
Германн ©   (2011-09-06 01:09) [60]


> OW ©   (05.09.11 11:52) [18]
>
>
> > Anatoly Podgoretsky ©   (05.09.11 11:43) [15]
>
> вот, правый верхний угол
> где бомба?
>
> ? 1
> ? 3 1
> Б Б 1


Дык это ж всё таки "Минёр", а не "Шахтёр". Порой приходиться угадывать. Не угадал - начинай новую жизнь! :)


 
Anatoly Podgoretsky ©   (2011-09-06 08:43) [61]

> Германн  (06.09.2011 01:09:00)  [60]

Сапер ошибается только один раз.


 
Очень злой   (2011-09-06 09:29) [62]


> Юрий Зотов ©   (05.09.11 16:29) [46]
>
...
> Написать модуль, содержащий полный набор арифметических
> функций для работы с целыми числами в любой системе счисления
> от 2 до 255 включительно. Число задается записью:

...

>    Value: string // Строковое представление числа в этой  системе
...


Что есть строковое представление числа в системе от 17 и более (особенно системе 255)?


 
Inovet ©   (2011-09-06 09:48) [63]

> [62] Очень злой   (06.09.11 09:29)
> Что есть строковое представление числа в системе от 17 и
> более (особенно системе 255)?

Да какая разница. Нпример начиная от $00 и до $ff или для меньших оснований можно более привычными пользоваться
0123456789abcdefghijklmnopqrstuvwxyz... и т.д.
Для основания 65536 можно шрифт специальный сделать в матрице 4х4.:)


 
jack128_   (2011-09-06 09:49) [64]


> Что есть строковое представление числа в системе от 17 и

ну например 33(в десятичной) = 1G(в семнадцатиричной)

> более (особенно системе 255)?

в анси 255 символов, так что проблем нет. А уж если юникод использовать...


 
pasha_golub ©   (2011-09-06 11:22) [65]

Я уж было поверил в светлое будущее с утра. Прислал мальчонка работающий, хороший код. Я ж на радостях с утра песенки пою. И тут мой значит темный попутчик заставляет меня пошарить на просторах интернета. Так и есть. Нахожу этот же код, немного подправленный в комментариях.

Не, ну твою ж мать! Они вообще что-ли безмозглые? Раз ты нашел решение, так перепиши по образу и подобию, но сам же! А этот вплоть до ресурсов, все один к одному.


 
Inovet ©   (2011-09-06 11:55) [66]

> [65] pasha_golub ©   (06.09.11 11:22)
> Нахожу этот же код, немного подправленный в комментариях.

Какие последуют санкции?


 
Sha ©   (2011-09-06 12:38) [67]

требования написать самостоятельно не было


 
Anatoly Podgoretsky ©   (2011-09-06 12:43) [68]

> jack128_  (06.09.2011 09:49:04)  [64]

Но печатных меньше, наше все в Юникоде


 
Sha ©   (2011-09-06 12:45) [69]

а их все в ASCII, обидно, да?


 
pasha_golub ©   (2011-09-06 13:24) [70]


> Inovet ©   (06.09.11 11:55) [66]


> Какие последуют санкции?

Прощаемся, конечно же. Я же в активном поиске.


> Sha ©   (06.09.11 12:38) [67]
>
> требования написать самостоятельно не было

Мы же не в США, где 90% юристов всего мира. Секир башка, и будь здоров :)


 
Romkin ©   (2011-09-06 19:32) [71]


> Какие будут предложения? Готов рассмотреть.

А я тебе уже предлагал:

Однонаправленный список. В узлах хранится ключ типа word. Реализовать операции со списком и дополнительно метод обращения списка Reverse, переставляющий узлы в обратном порядке.
Для теста консольное приложение, вход - значения ключей, -1 означает конец ввода. Вывести список в обратном порядке.

Все. Пусть реализуют как понравится, а потом можно смеяться


 
Sha ©   (2011-09-06 20:16) [72]

> Romkin ©   (06.09.11 19:32) [71]

Тут вроде негде ошебиться :)

function Reverse(p: PNode): pNode;
var
 q: pNode;
begin;
 Result:=nil;
 while p<>nil do begin;
   q:=p.Next; p.Next:=Result; Result:=p; p:=q;
   end;
 end;


 
Компромисс   (2011-09-07 10:12) [73]


> Тут вроде негде ошебиться :)


Почему? Лично я убил бы за имена переменных.
q должно было быть next (или nextNode), p должно было быть current (или currentNode), вместо Result должна была быть еще одна переменная previos (previousNode), а Result присваиваться только один раз (Result := Current).


 
pasha_golub ©   (2011-09-07 10:29) [74]


> а Result присваиваться только один раз (Result := Current).

Чойта? Всегда использую переменную Result без зазрения. Правда имя функции должно соответствовать.


 
Inovet ©   (2011-09-07 10:33) [75]

> [73] Компромисс   (07.09.11 10:12)
> Лично я убил бы за имена переменных.
> q должно было быть next (или nextNode), p должно было быть
> current (или currentNode)

Имхо. Оно хорошо, но для локальных длинно слишком. Достаточко nn, cn, pn. Раз работа с нодами, то смысл понятен из контекста.


 
oxffff ©   (2011-09-07 10:43) [76]

C result нужно быть внимательным, бо логику можно заложить разную

function abc:string;
begin
.........
result:="b";
raise exception.create("");
.........
end;

var a:string;

begin
a:="a";
try
a:=abc;
except
showmessage(a);
end;
end;


 
Kerk ©   (2011-09-07 10:47) [77]


> Достаточко nn, cn, pn. Раз работа с нодами, то смысл понятен
> из контекста.

Что за тяга такая буквы экономить?


 
Inovet ©   (2011-09-07 10:57) [78]

> [77] Kerk ©   (07.09.11 10:47)
> Что за тяга такая буквы экономить?

В данном случае как вместо Iterator написать i.


 
Sergey Masloff   (2011-09-07 11:13) [79]

Kerk ©   (07.09.11 10:47) [77]
>Что за тяга такая буквы экономить?
Ну просто зачем они (лишние буквы) в именах локальных переменных в функции из 10 строк? В понятности ничего не добавляют... Чего плодить-то


 
Kerk ©   (2011-09-07 11:19) [80]

Скорость понимания кода при чтении такой подход снижает в разы.
Попробуй разгляди разницу между cn, pn и nn, не вчитываясь в каждую букву.



Страницы: 1 2 3 4 5 6 7 8 вся ветка

Форум: "Прочее";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.67 MB
Время: 0.017 c
15-1315941054
Медвежонок Пятачок
2011-09-13 23:10
2012.01.01
кургинян о 911 как бы совсем без конспирологии


15-1315081792
Юрий
2011-09-04 00:29
2012.01.01
С днем рождения ! 4 сентября 2011 воскресенье


15-1316118584
Юрий
2011-09-16 00:29
2012.01.01
С днем рождения ! 16 сентября 2011 пятница


15-1316145972
vajo
2011-09-16 08:06
2012.01.01
Win XP. Проблема входа в систему.


1-1279133084
Дмитрий Белькевич
2010-07-14 22:44
2012.01.01
Как передать параметры при инсталляции сервиса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский