Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.01;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.69 MB
Время: 0.021 c
1-1278968008
Oleg
2010-07-13 00:53
2012.01.01
Закладки PageControl


2-1317136441
Antoxa
2011-09-27 19:14
2012.01.01
DragNDrop в приложении


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


15-1316151747
stdin
2011-09-16 09:42
2012.01.01
Firebird data comparer


2-1316690831
Laguna
2011-09-22 15:27
2012.01.01
Позиционирование в Combobox по значению объекта