Hirdetés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- V.Milán: A síntrabant, a falunap és Jézus esete
- eBay-es kütyük kis pénzért
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Lalikiraly: Astra kalandok @ Negyedik rész
- Trewerr: Analóg-digitális jelátalakítás (zenefájlok leegyszerűsítésével magyarázva)
- GoodSpeed: 3I/Atlas: Üstökös vagy idegen civilizáció űrhajója?
Ú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.
-
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. -
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.
-
-
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.
-
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
-
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.
-
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.

-
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).
-
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); -
-
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- VR topik (Oculus Rift, stb.)
- V.Milán: A síntrabant, a falunap és Jézus esete
- BestBuy topik
- Windows 11
- HiFi műszaki szemmel - sztereó hangrendszerek
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Revolut
- További aktív témák...
- LG 27GS60QX-B - 27" Ívelt VA - 2560x1440 2K QHD - 180Hz 1ms - AMD FreeSync Premium
- HP Pavilion 15-bc512nh (Core i7-9750H / 24GB DDR4 / 512GB / GTX1650 4GB / Win11) ÁFA, Garancia
- Huawei SUN-2000 6KTL-L1 napalem inverter eladó
- iPhone 16 PRO 256GB 3 hetes!! fehér titán MEDIAMARKT számla! 2028 október 24-ig Apple garancia!
- iPhone 14 PRO 128GB Vadonatúj gyári Apple 100% os akkumlátor! Gyönyörű! Fulldoboz!
- Telefon felvásárlás!! Samsung Galaxy Note 10+/Samsung Galaxy Note 20/Samsung Galaxy Note 20 Ultra
- GYÖNYÖRŰ iPhone SE 2020 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3582, 100% Akksi
- Acer TravelMate P214 i3-1115G4 12GB 256GB 14" FHD 1év garancia
- OnePlus Pad Go Green nagy kijelző, könnyű hordozhatóság 8/128 GB Használt, karcmentes 3 hó
- Xiaomi Mi 10T Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
), majd megcsinálod amit szeretnél.
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.
), de arról én nem tudok és nem is akarok tudni.


