Příklady C++
Z K.A.P.
Skočit na navigaciSkočit na vyhledáváníPříklady programů ve skriptovacím programovacím jazyku v jazyku C++.
Obsah
- 1 Příklad 1 - práce s proměnnými uloženými do databáze
- 2 Příklad 2 - spuštění sestavy z generátoru sestav
- 3 Příklad 3 - odeslání mailu s přílohou pomocí SMTP
- 4 Příklad 4 - odeslání souboru pomocí MaximObjServeru
- 5 Příklad 5 - použití funkcí objektu TMOSCommunicator pro komunikaci s MaximObjServerem
- 6 Příklad 6 - práce s TKAPBtrTable ve formuláři
- 7 Příklad 7 - použití paměťové tabulky TKAPMemTable
Příklad 1 - práce s proměnnými uloženými do databáze
int i;
String s; {
s = IniReadString("ScriptTest", 1, True, _AktualniSklad_, "5");
ShowMessage(Settings.Values["INI.FirmaJmeno"]+"\n"+Settings.Values["USER.JmenoUziv"]+"\n"+_KonfigDir_);
LogWrite("Direktivy:"+_Direktivy_);
if (s != "") {
i = StrToInt(s)+1;}
else
{i = -10;}
if (!IniWriteInteger("ScriptTest", 1, True, _AktualniSklad_, i))
{ShowMessage("V IniWriteInteger se vyskytla chyba");}
}
Příklad 2 - spuštění sestavy z generátoru sestav
String s; TDateTime d1, d2; Word DD, MM, YY;
{
DecodeDate(Date, YY, MM, DD);
if (MM==1) // Zjisteni predchoziho mesice
{ MM = 12;
YY = YY - 1;}
else
{ MM = MM - 1;}
D1 = EncodeDate(YY, MM, 1);
D2 = EncodeDate(YY, MM, DaysInMonth(YY, MM));
S = GSRunReport(6, 1, "KFG_Datum1="+StrDate(D1)+chr(13)+ "KFG_Datum="+StrDate(D2)+chr(13)+ "INI_Jmeno=Pokusný sklad");
//S = GSRunReportV(6, 1, ["KFG_Datum1", "KFG_Datum", "INI_Jmeno"],[StrDate(D1), StrDate(D2), "Pokusný sklad"]);
ShowMessage(s);
}
Příklad 3 - odeslání mailu s přílohou pomocí SMTP
String s;
{ //From, SendTo, FileAttach, Subject, SMTPServer, SMTPSenderName, SMTPPassword, BodyString, ErrMessage
if (SendMailBySMTP("odesilatel@posta.cz", "prijemce@posta.com",
"UZIV\\Sestava1.SES"+#9+"UZIV\\SESTAVA2.SES"+#13+"UZIV\\Doklad.pdf",
"Test scriptu", "smtp.posta.cz", "SMTPjmeno", "SMTPheslo", "Testovaci email.\nKonec", s))
{ ShowMessage("OK\n"+ s);}
else
{ ShowMessage("CHYBA\n"+ s);}
}
Příklad 4 - odeslání souboru pomocí MaximObjServeru
TMOSCommunicator MOSCommunicator;
{
MOSCommunicator = TMOSCommunicator.Create("MOS.bin", "", "", "", 0);
if (MOSCommunicator.SendFile("DIR\\DATA.xml", "DATA1.XML", "", "", "", True))
{ LogWrite("Prenos OK");}
else
{ LogWrite(MOSCommunicator.ErrMessage);}
MOSCommunicator.Free;
}
Příklad 5 - použití funkcí objektu TMOSCommunicator pro komunikaci s MaximObjServerem
TMOSCommunicator MOSCommunicator; String Info; Float Velikost; TDateTime Cas;
{
MOSCommunicator = TMOSCommunicator.Create("", "192.168.17.1", "MOSuser", "MOSpswd", 1);
try{
if (MOSCommunicator.Connect) { // pokud se poipojím, pak se vše realizuje
// v rámci jednoho poipojení
// ShowMessage('Pripojeno');
if (MOSCommunicator.Connected) { // test navic
if (MOSCommunicator.SendSMS("111222333","Pokus o poslani SMS"))
{ShowMessage("SMS odeslana.");}
else
{ShowMessage("Chyba pri odesilani SMS:" + #13+MOSCommunicator.ErrMessage);}
if (MOSCommunicator.SendFile("DIR\\DATA.xml", "DATA1.XML", "", "", "", False))
{
ShowMessage("Prenos OK");
if (MOSCommunicator.GetFileInfo("Sklad6DOC", "Stavy.xml", Info, Velikost, Cas)){
ShowMessage("GetFileInfo:"+#13 + Info+ #13 + FloatToStr(Velikost) + #13 + DateTimeToStr(Cas));
if (!MOSCommunicator.GetFile("DIR\\Stavy2.xml", "Stavy.xml", "Sklad6DOC")){
ShowMessage("GetFile:" + #13 + MOSCommunicator.ErrMessage);}
} else
{ ShowMessage("GetFileInfo:" + #13 + MOSCommunicator.ErrMessage);}
} else {
ShowMessage("SendFile"+#13+MOSCommunicator.ErrMessage);}
MOSCommunicator.Disconnect;
} else
{ShowMessage(MOSCommunicator.ErrMessage);}
} else
{ShowMessage(MOSCommunicator.ErrMessage);}
}finally{
MOSCommunicator.Free;
}
}
Příklad 6 - práce s TKAPBtrTable ve formuláři
TKAPBtrTable t; TForm f; TDBGrid DBGrid; TDataSource ds; {
ds = null;
t = TKAPBtrTable.Create;
try{ // try-finally cást není nutná, ale správne se takto reší problémové situace
t.TableName = "CISELNIK.btr"; // jméno tabulky bez cesty
t.IndexFieldNames = "TypCis;Klic1";
t.Open;
f = TForm.Create(Application);
try{
f.Caption = "Zobrazení " + t.TableName;
f.Position = poDefault;
DBGrid = TDBGrid.Create(f); // parametr urcuje vlastníka prvku DBGrid
DBGrid.Parent = f; // Parent urcuje, na kterém formulári se má DBGrid zobrazit
DBGrid.Align = alClient; // alClient znamená vyplnit celý formulár
ds = TDataSource.Create(f); // TDataSource propojuje tabulku s vizuálními prvky pro editaci (DBGrid)
DBGrid.DataSource = ds;
ds.DataSet = t;
f.ShowModal; // hlavní okno je treba vždy otevírat pomocí ShowModal
}finally{
F.Free; // objekty, kterým byl urcen vlastník (DBGrid) se ruší automaticky
} // pri rušení vlastníka (pri F.Free se ruší DBGrid i ds)
}finally{
t.Free; // vytvorené objekty je treba zrušit
}
}
Příklad 7 - použití paměťové tabulky TKAPMemTable
TKAPMemTable t; TForm f; TDBGrid DBGr; TDataSource ds; Integer MinA, x;
{
t = TKAPMemTable.Create;
try{
t.FieldDefs.Add("A",ftInteger,0, false);
t.FieldDefs.Add("B",ftString,30, false);
t.FieldDefs.Add("C",ftfloat,0, false);
t.FieldDefs.Add("D",ftDate,0, false);
t.FieldDefs.Add("E",ftTime,0, false);
t.CreateTable(nil);
// t.IndexFieldNames = "A;B";
t.AddIndex("i1", "A;B",[ixCaseInsensitive]); // nesmi byt prazdna mnozina
t.IndexName = "i1";
t.Open;
t.Append;
t.FieldByName("A").AsInteger = 5555;
t.FieldByName("B").AsString = "TEST";
t.FieldByName("C").AsFloat = 10.5;
t.Post;
t.Append;
t.FieldByName("A").AsInteger = 4444;
t.FieldByName("D").AsDateTime = Date+1;
t.Post;
t.Append;
t.FieldByName("A").AsInteger = 3333;
t.Post;
t.Append;
t.FieldByName("A").AsInteger = 8888;
t.Post;
t.First;
MinA = t.FieldByName("A").AsInteger;
while(!t.EOF){
if (t.FieldByName("A").AsInteger < MinA) { MinA = t.FieldByName("A").AsInteger;}
t.Next;
}
ShowMessage("Min: "+IntToStr(MinA));
f = TForm.Create(Application);
try{
f.Caption = "Zobrazení MemTable";
f.Width = 1024;
f.Height = 768;
DBGr= TDBGrid.Create(f);
DBGr.Parent = f;
DBGr.Align = alClient;
ds= TDataSource.Create(f);
DBGr.DataSource =ds;
ds.DataSet = t;
f.ShowModal;
}finally{
f.free;
}
}finally{
t.Free;
}
}