Witam! Piszę program wspomagający obliczanie ciężarów konstrukcji stalowych. W zasadzie pierwsza działająca wersja programu jest już ukończona i można powiedzieć , że nie piszę tylko napisałem choć cały zas go ulepszam bo jest to wersja noo... powiedzmy, że 1.1.
Program pisałem w czasie wakacji. w załączniku umieszczę screen z działającego programu.
Ogólnie chciałbym omówić działanie programu a raczej podzielić go na "Kawałki" i omówić ich działanie gdyż być może komuś akurat przyda się dany fragment kodu robiący to czy tamto. No więc do dzieła!
</image>
Widać działający program.
Pojedyncze przyciski ( od Belka1 do Belka 10 ) służą do nawigacji pomiędzy belkami ( na ciężar jednej konstrukcji przypada kilka Belek Na ciężar jednej belki przypada kilka czynników)
Można to rozrysować tak:
Konstrukcja 1:
konstrukcji numer 1:
-Belka 1:
Ciężar Belki numer 1:
-Ciężar Kształtownika numer 1
-Ciężar kształtownika numer 2 (Występuje jeżeli jest liczona belka łamana)
-Ciężar Blachy numer 1 (Blachy składające się na jedną belkę zawsze są dwie)
-Ciężar Blachy numer 2
-Ciężar Uszek
-Belka 2:
Ciężar belki numer 2:
Itd.
{1}
{2}
itd.
to oznaczenia które normalnie nie figurują w kodzie ale dielą fragment kodu na mniejsze fragmenty które będę omawiał.
kod dla tego przycisku to:
{1}
var
TF:TEXTFILE;
var
aa:String;
bb:String;
cc :String;
dd :String;
ee :String;
ff :String;
gg :String;
hh :String;
ii:String;
jj:String;
{1}
begin
{2}
Form2.Caption:='Belka1'+' - '+P;
AssignFile(TF,'t.txt');
Reset(TF);
Readln(TF,t);
Closefile(TF);
t:=t+tu;
{2}
{3}
assignFile(TF, t);
if fileexists(t)=True then
Rewrite(TF);
Writeln(TF,Edit1.Text);
Writeln(TF,Edit2.Text);
Writeln(TF,Edit3.Text);
Writeln(TF,Edit4.Text);
Writeln(TF,Edit5.Text);
Writeln(TF,Edit6.Text);
Writeln(TF,Edit7.Text);
Writeln(TF,Edit8.Text);
Writeln(TF,Edit9.Text);
Writeln(TF,Edit10.Text);
Writeln(TF,FloatTOStr(CKsztaltownika));
Writeln(TF,FLoatTOStr(GBlachy));
Writeln(TF,FloatToStr(GB));
CloseFile(TF);
{3}
{4}
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
Edit9.Clear;
Edit10.Clear;
Label1.Caption:='';
Label3.Caption:='';
Label5.Caption:='';
Label7.Caption:='';
Label8.Caption:='';
Label9.Caption:='';
Label10.Caption:='';
Label11.Caption:='';
Label13.Caption:='';
Label14.Caption:='';
Label15.Caption:='';
Label16.Caption:='';
{4}
{5}
begin
AssignFile(tf,'t.txt');
Reset(tf);
Readln(tf,t);
CLoseFile(tf);
t:=t+'\belka1.txt';
tu:='\belka1.txt';
AssignFile(TF, t);
Reset(TF);
Readln(TF,aa);
Edit1.text:= aa;
Readln(TF,bb);
Edit2.text:= bb;
Readln(TF,cc);
Edit3.text:= cc;
Readln(TF,dd);
Edit4.text:= dd;
Readln(TF,ee);
Edit5.text:= ee;
Readln(TF,ff);
Edit6.text:= ff;
Readln(TF,gg);
Edit7.text:= gg;
Readln(TF,hh);
Edit8.text:= hh;
Readln(TF,ii);
Edit9.text:= ii;
Readln(TF,jj);
Edit10.text:= jj;
CloseFile(TF);
{5}
{6}
if edit1.text <> '' then
else
Edit1.Text:='0';
if edit2.text <> '' then
else
Edit2.Text:='0';
if edit3.text <> '' then
else
Edit3.Text:='0';
if edit4.text <> '' then
else
Edit4.Text:='0';
if edit5.text <> '' then
else
Edit5.Text:='0';
if edit6.text <> '' then
else
Edit6.Text:='0';
if edit7.text <> '' then
else
Edit7.Text:='0';
if edit8.text <> '' then
else
Edit8.Text:='0';
if edit9.text <> '' then
else
Edit9.Text:='0';
if edit10.text <> '' then
else
Edit10.Text:='0';
end;
end;
{6}
fragment {1} odpowiada za zadeklarowanie zmiennych lokalnych
fragment {2} odpowiada za nadanie odpowiedniej nazwy pasku tytułowemu oraz wczytaniem odpowiedniej ścieżki dostępu do odpowiedniej zmiennej ( zmienne t,tu) z pliku ustwieniowego odpowiedzialnego za przechowywanie nazwy aktualnej ścieżki dostępu.
fragment {3} odpowiedzialny jest za zapisanie aktualnych wartości okienek edycyjnych oraz danych niezbędnych do późniejszego obliczenia wyniku do pliku wcześniej otworzonej belki.
fragment {4} odpowiedzialny jest za wyczyszczenie wszystkich okienek edycyjnych oraz etykiet wyświetlających wyniki oraz inne istotne informacje
fragment {5} odpowiedzialny jest za wczytanie z żądanej belki wartości do odpowiednich zmiennych oraz wszystkich okienek edycyjnych
fragment {6} odpowiedzialny jest za wprowadzenie wartości zero do każdego okienka edycyjnego które jest puste
Jest tak z każdym z 10-ciu przycisków nawigujących choć oczywiście zależnie od numeru belki zmieniają się niektóre czynniki w kodzie
Dziękuję za przeczytanie tej pierwszej części artykułu - właściwie wstępu gdyż jest to tylko niewielka część kodu mojego programu - jeden z aspektów działania a ma się rozumieć działanie programu jest w całości o wiele obszerniejsze!
Jeżeli macie jakiekolwiek pytania,uwagi lub wątpliwości to piszcie śmiało!
Autor programu. :-)