Új hozzászólás Aktív témák
-
coco2
őstag
válasz RedHarlow #9067 üzenetére
Sziasztok!
Lehetőség szerint asp.net példa projecteket keresek. Alap bemutatót, és utána ollózni való nyersanyagot. Összedobnék egy 2-3 táblás gyorsfényezett adat felvitel / módosítás / adat visszakeresés példa alkalmazást. C#-ben otthon vagyok, weben otthon vagyok, asp-ben nem vagyok otthon. Egyszerű dolog után néznék, felületes stuff elég. Blogok, videók, aki ismer a témában barátságos tartalmat, küldjön róla egy linket legyen szíves.
Köszönöm.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
martonx
veterán
válasz RedHarlow #9064 üzenetére
Én a helyedben ezt az egész IE megnyitósdit kihagynám. Nézd meg, hogy milyen http hívások mennek az IE és az Oracle izé között, aztán elég csak ugyanazokat a http hívásokat végigcsinálnod C#-ból HttpClient-tel. Ez így sokkal robosztusabb lesz, mint böngészőn keresztül bohóckodni.
Én kérek elnézést!
-
disy68
aktív tag
válasz RedHarlow #9062 üzenetére
A Selenium nem fog "elérni" egy korábban indított böngészőt, nem arra lett kitalálva, hanem ő indít egy böngészőt/böngésző motort jobb esetben gui nélkül (headless mode) és abban lehet kódból ügyködni.Amúgy lehet indítani gui-val is, akkor látszik, hogy mi is történik, de az esetek többségében ez nem elvárás.
Szóval ezt úgy tudod megoldani, hogy használod az internet explorer drivert hozzá, ha csak azzal megy jól az oldal. Amikor megvan a feltöltés a programodban, akkor a Selenium-mal megnyitod az oldalt, beloginolsz (így szép magyarosan ), majd megcsinálod amit szeretnél.
“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
-
Keem1
veterán
válasz RedHarlow #8949 üzenetére
Objektumorientált paradigma megvan? Lokális változót nem fogsz tudni kívülről használni (ahogy ciklusváltozót se cikluson kívül), így a fentebb említett osztályváltozó lesz a te embered.
Lehet hogy létezik rá favágó megoldás (joysefke köszi a kifejezést ), de arról én nem tudok és nem is akarok tudni. -
dqdb
nagyúr
válasz RedHarlow #8917 üzenetére
Valami ilyesmi kellene neked fapados megvalósítással:
var delayBetweenRetries = 30 * 1000;
var maxRetries = 3;
var retryCount = 0;
var expectedFileCount = GetExpectedRemoteFileCount();
var actualFileCount = 0;
for (;;)
{
var fileCount = GetRemoteFileCount();
if (fileCount > expectedFileCount)
{
throw new TooManyRemoteFilesException();
}
else if (fileCount == expectedFileCount)
{
break;
}
else if (fileCount == actualFileCount)
{
if (++retryCount > maxRetries)
throw new TooManyRetriesException();
}
else if (fileCount > actualFileCount)
{
retryCount = 0;
actualFileCount = fileCount;
}
else
{
throw new RemoteFileCountMismatchException();
}
Thread.Sleep(delayBetweenRetries);
}Ha a távoli szerveren drága az exportálás és az SCP kapcsolat szeret megszakadni, akkor érdemes úgy megírni a
GetRemoteFileCount()
metódust, hogy az kezelje a kapcsolat újraépítését. És persze nem árt a fájlok számának figyelése mellett a tartalmukat is ellenőrizni később.Ha sokkal bonyolultabb hibatűrést megvalósító esetek is előfordulhatnak, akkor a Polly library az egyik legjobb arra a célra, hogy ne kelljen minden távoli hívásnál/lekérdezésnél 30-50 soros logikát megírni.
[ Szerkesztve ]
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
sztanozs
veterán
válasz RedHarlow #8779 üzenetére
IFRAME DOM nem érhető el a forrás oldalból, ha nem azonos domain-en van hosztolva.
Esetleg browser helper framework segíthet (pl Selenium).
De lehet, hogy nem értem a problémát...BTW ha tök kezdő vagy c#-ban de JS-ben megy, akkor miért akarod c#-ban megcsinálni?
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
moseras
tag
válasz RedHarlow #8738 üzenetére
Üdv,
Egyetértek az előttem hozzászólokkal, néhány megjegyzésem lenne:
string filesdir = Path.Combine(@"C:\tmp", "files");
// Összes
Console.WriteLine("Összes");
string[] files = Directory.GetFiles(filesdir);
foreach (var item in files)
{
Console.WriteLine(item);
}
Console.WriteLine($"{files.Length} db");
// A GetFiles szűrője alapján (a GetFiles nem támogatja a Regex-et)
Console.WriteLine();
Console.WriteLine("A GetFiles szűrője alapján");
files = Directory.GetFiles(filesdir, "REF*.xml");
foreach (var item in files)
{
Console.WriteLine(item);
}
Console.WriteLine($"{files.Length} db");
// Regex-el tovább szűrve
Console.WriteLine();
Console.WriteLine("Regex-el tovább szűrve");
Regex reg = new Regex(@"REF\w+\d+\w+\.xml", RegexOptions.IgnoreCase);
var rfiles = Directory.GetFiles(filesdir, "REF*.xml")
.Where(path => reg.IsMatch(path))
.ToList();
foreach (var item in rfiles)
{
Console.WriteLine(item);
}
Console.WriteLine($"{rfiles.Count} db");Eredmény:
Összes
C:\tmp\files\1.xml
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
C:\tmp\files\REFFFFFFFFFFFF.xml
7 db
A GetFiles szűrője alapján
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
C:\tmp\files\REFFFFFFFFFFFF.xml
6 db
Regex-el tovább szűrve
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
5 dbInnentől kezdve tényleg tudni kellene, hogy mit is akarunk szűrni, mert ugye a REFFFFFFFFFFFF.xml nem mindegy, hogy benne van e, vagy nincs, vagy a számok és a REF között kell e lennie még további karakternek, ha igen, milyennek, hány darabnak, stb. De szerintem innen már boldogulsz vele.
Imi.
[ Szerkesztve ]
-
dqdb
nagyúr
válasz RedHarlow #8736 üzenetére
[link]
erre nem kell regexunrecognised escape characterre jutottam. Stackoverflow-on\googleben\youtubeon is kerestem hasonló hibákat de nem igazán jött össze.
Pedig a nálam legalábbis első találat lenne a megfejtés. Vagy @" vagy .*\\..tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
moseras
tag
válasz RedHarlow #8731 üzenetére
Üdv!
List<string> words = new List<string> { "class", "xml", "xlsx", "teszt" };
string patt = string.Join("|", words);
Regex regex = new Regex(patt, RegexOptions.IgnoreCase);
string v = "class asdfgh 123 xml8 xls xlsx15 xml xlsx";
int appcount = regex.Matches(v).Count;
Console.WriteLine(appcount);Azt írja ki, hogy 5
[ Szerkesztve ]
-
dqdb
nagyúr
válasz RedHarlow #8720 üzenetére
Nem ártana, ha véletlenszerűen kiollózott részletek helyett a komplett osztály forrását betennéd, mert így senki sem fog tudni semmi értelmeset mondani, legfeljebb találgatni, hogy mit csinálhattál.
Az utolsó előtti hozzászólásodban például az látszik, hogy a pcpath egy lokális változó, aminek értéket adsz, aztán nem kezdesz vele semmit sem.
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
joysefke
veterán
válasz RedHarlow #8707 üzenetére
Ha azt is kezelni akarod, ha a keresett szó esetleg többször előfordul a szöveg egy szavában (lalala - la, 3x)
akkor egészben a szövegen (beolvasod egy darab stringként) vagy soronként végigiterálsz és hívogatod astring.Substring(string, int, StringComparison)
metódust amely mindig a keresett szó első előfordulásának indexét adja vissza. Minden egyes találat után növeled az offsetet (a második, egész szám paraméter) az előző előfordulás utánra addig amíg van találat. Az eredményeket számolod.Most hogy leírtam ez utóbbi nekem jobban tetszik mint a fenti.
[ Szerkesztve ]
-
joysefke
veterán
válasz RedHarlow #8707 üzenetére
én a következőképpen állnék neki:
-(1) Méretétől függően a fájlt beolvasod vagy egyben, vagy végigiterálsz rajta soronként.
-(2) Minden sort szétbontasz szavakra
string.Split(...)]
.A string.Split(...) -et úgy paraméterezed, hogy pontot-vesszőt-szóközt dobjon. (sokat nem számít, de gyorsítja a köv pontot)
-(3) Minden egyes szóra leellenőrzöd, hogy az adott szó tartalmazza-e a keresett szót:
string.Contains(string, string, StringComparision)
Ha igen, növeled a számlálódat. Kisbetű-nagybetűt érdemes figyelmen kívül hagyni, illetve a regionális opciókkal is lehet esetleg játszani (nem tudom érdemes-e). Ehhez a StringComparison enum paramétert állítod be ahogy szeretnéd (ignore case legyen beállítva).
A módszer jól fog működni addig amíg nem akarod azt is nyilván tartani, ha a keresett szó többször szerepelt némely szóban. (lalala - la, 3x).
[ Szerkesztve ]
-
-
Zalanius
tag
válasz RedHarlow #8268 üzenetére
Szerintem nagyjából ezt keresed: Office interop objects.
A bemásolt kódod tehát valahogy így folytatódik (ez nyilván csak vázlat, nem is csináltunk semmit a dokumentummal a megnyitáson kívül):
...
excel.Visible = true;
var wbk = excel.Workbooks.Open(path);--= Zalán =--
-
-
sztanozs
veterán
válasz RedHarlow #8268 üzenetére
Huhh, úgy látom a fejedben még nem nagyon állt össze a változók hatóköre, és a használt osztályok/funkciók hatása. Szerintem olvasgasd még egy kicsit az MSDN-t és próbáld kiguglizni, mit jelentenek a hibaüzenetek, mert talán még csak le sem fordul rendesen.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Állásajánlatok
Cég: Axon Labs Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest