Reklama
Nepřihlášený uživatel | Zaregistrovat se
 

Téma:

Počítače a InternetVývoj software

Spravuje:

edmund

Může vás zajímat



Reklama




Nazgul Vtipnýs 
Zkusím, dík.
Reakce na | Vlákno  
eso I will not vote for this Brexit, it is s 
Nazgul Vtipnýs 
Zase si hraju s C#... Jak mohu za běhu programu přidat do Toolbaru nějaké tlačítko? (Používám mono.) Vytvořil jsem Action a ToolItem, ale nějak jsem nepřišel na to, jak tu Action přiřadit k tom ToolItemu. Má vlastnost Action, ale ta je read only. A google mlčí (nebo googlím blbě).
 
Nazgul Vtipnýs 
Zkompilovalo se. Ještě jednou dík.
 
Mormegil Už jste  přispěli?
Aha, tak opravdu je to divné/složitější: 2D pole ten generický Enumerable vskutku neimplementujte, má jen negenerický. Takže buď si to naimplementovat ručně (ale aby to mělo smysl, tak místo všech těch LINQových foreachů dělal normální intové fory), anebo jednodušeji return map.Cast<Hex>(); když už mám ten LINQ.
Nazgul Vtipnýs 
2. Naprosto netuším.
Nazgul Vtipnýs 
Dík, vyzkouším.
Mormegil Už jste  přispěli?
1. Bohužel pole vrací negenerický enumerator, musíš to pole nejdřív přetypovat na příslušný generický Enumerable, ten ti pak vydá generický Enumerator.
2. Je vůbec 2D pole Enumerable? Asi vlastně proč by ne, ale nějak mě to nikdy nenapadlo a nezkoušel jsem...
Saggy I am the beast I  worship
V public IEnumerator<Hex> GetEnumerator() si musis definovat svuj enumerator (poradi, v jakem chces enumerovat) nejlepe pres yield return. Treba neco jako:

foreach (int x in Enumerable.Range(0, width - 1))
{
foreach (int y in Enumerable.Range(0, height - 1))
{
yield return map[x, y]
}
}
Nazgul Vtipnýs 
Snažím se po letech oprášit své znalosti C# a zkouším cosi naprogramovat do šuplíku. Válčím teď s pokusem o enumerator.

public class HexMap : IEnumerable<Hex> { Hex[,] map; int width, height; ... public IEnumerator<Hex> GetEnumerator() { return map.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }

Co je špatně? Ten první GetEnumerator() mi hlásí Error CS0266: Cannot implicitly convert type 'System.Collections.IEnumerator' to 'System.Collections.Generic.IEnumerator<TOI.Terrain.Hex>'. An explicit conversion exists (are you missing a cast?) (CS0266) (TOI)
 
Vlaho Lasciate ogni speranza voi ch´entrate 
Aha, tak nakonec to vypadá na správný odkaz, děkuji uctivě.
Vlaho Lasciate ogni speranza voi ch´entrate 
Díky, ale já to chci zadat natvrdo do programu (Properties.Settings.Default?).
gorila Navision je zlo, které se musí vymítit.. 
http://www.sevenforums.com/tutorials/419-run-different-user.html
Vlaho Lasciate ogni speranza voi ch´entrate 
Přátelé,

mám WindowsFormApplication, zkompilovanou ve VisualStudiu a potřebuji ji spustit pod jistým servisním účtem s heslem, kvůli přístupovým právům.

Jak to má, do prčic, nastavit?
 
vida, znal jsem jen javovou verzi. diky!
Nevíte prosím o nějaké open-source knihovně na PGP, která nespočívá ve spouštění již nainstalovaného gpg.exe?
 
Ploppy divXXX rulez 
Děkuju moc, to je přesně to co jsem potřeboval. Zkusím a kdyžtak se ozvu s dotazem. Vypadá to jednoduše. Takovýto hezký tutoriál samozřejmě v dokumentaci u NCo není...
carmichael  
Co se tyce SAP .Net Connectoru, tak ten dobre napsany a jednoduchy. Zkusim popsat jednoduchy navod na zakladni volani RFC.

1. Do projektu je nutne dat reference na dve knihovny: sapnco.dll a sapnco_utils.dll a importoval jmenny prostor:
using SAP.Middleware.Connector;

2. Nejprve je nutne se k SAPu pripojit - tedy nastavit parametry pro pripojeni do SAP systemu:

RfcConfigParameters rfc = new RfcConfigParameters();
rfc.Add(RfcConfigParameters.Name, "EPD"); // Tento parametr neni vyzadovan, ale uvadim jej vzdy uz ze srtevacnosti
rfc.Add(RfcConfigParameters.AppServerHost, "10.17.188.180"); // IP aplikacniho serveru SAPu
rfc.Add(RfcConfigParameters.Client, "900"); // Klient (u nas ve firme jsou 900,800, 400, 500 apod.)
rfc.Add(RfcConfigParameters.User, "sapuser"); // Prihlasovaci jmeni
rfc.Add(RfcConfigParameters.Password, "sappassword"); // Prihlasovaci heslo
rfc.Add(RfcConfigParameters.SystemNumber, "01"); // Cislo systemu, zaclo se pouzivat u novejsich verzi SAPu (pokud neni pouzivano, nechat prazdne)

RfcDestination rfcDest = RfcDestinationManager.GetDestination(rfc);
RfcRepository rfcRep = rfcDest.Repository;


3. Definice volane funkce a jejich vstupnich parametru:

IRfcFunction irfc = null;
irfc = rfcRep.CreateFunction("ZRFC_GET_SO_FOR_CPO"); // Nazev volane funkce

pokud vstupem jsou datova pole, je nutne je definovat:

irfc.SetValue("ERDAT_FROM", DateTime.Today.AddDays(-3)); // V tomto pripade se jedna o nastaveni datumu
irfc.SetValue("ERDAT_TO", DateTime.Today); // V tomto pripade se jedna o nastaveni take datumu

pokud vstupem je tabulka, napr. seznam uzivatelu apod., tak je nutne ji naplnit. Ja pouziji napr. seznam (List<string>) s uzivatelskymi jmeny:
List<string> LstUsers = new { "JNOVAK", "AKVETOVA" };

IRfcTable iTab = irfc.GetTable("INPUT"); // Nazev vstupni tabulky funkce

a nyni samotne naplneni tabulky:

int x = 0;
iTab.Insert(PurchaseOrders.Count);
foreach (string MyUser in LstUsers)
{
iTab[x].SetValue("BSTNK", myUser); // Nazev sloupce, do ktereho vkladam hodnoty
x++;
}


4. Nyni jsou definovany vstupni parametry a nyni zavolame RFC funkci:

irfc.Invoke(rfcDest);

5. Pokud chcete pracovat s vystupnimi daty RFC funkce, postupujeme hodne podobne jako pri plneni vstupni tabulky:

List<string> LstOut = new List<string>();
IRfcTable iRes = irfc.GetTable("OUTPUT");
for (int i = 0; i < iRes.RowCount; i++)
{
LstOut.Add(iRes[i].GetString("STATUS")); // Nazev sloupce vracene tabulky
}


A to by melo asi stacit. Jinak pri volani funkce se vytvari v adresari aplikace tzv. trace soubor, kde v pripade problemu lze zjisti podrobne informace o pripadnych problemech. Samozrejme lze pouzit try {} catch (exceprion e) {}. Snad to pomuze.
Ploppy divXXX rulez 
Podařilo se mi stáhnout ze SAPu ten .NET Connector verzi 3. Dostal jsem od klienta popis RFC funkcí, které sesmolil a potřebuji tyto fce zavolat. Potřeboval bych nasměrovat jak to nejsnáze provést, na co dát pozor, jak to funguje,...