- Egy szenzor, két zoomkamera: újraírta a Huawei a mobilfotózás történetét
- iPhone topik
- Google Pixel topik
- Poco M3 - felújított állomás
- Térerő gondok, tapasztalatok
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Milyen okostelefont vegyek?
- Honor Magic6 Pro - kör közepén számok
- One mobilszolgáltatások
- Olcsó Galaxyk telepíthetik a One UI 7-et
Új hozzászólás Aktív témák
-
dudikpal
senior tag
válasz
joysefke #8797 üzenetére
Neked is Köszi!
Szép kis könyvecske a maga 1000+ oldalával
Először átrágom magam a magyaron, aztán majd jöhet ez.Lenne egy noob problémám: kontroller Add-nál a data context list nekem üres, pedig már próbáltam minden eddig utánaolvasott, másoknál megoldást hozó fogást: clean-rebuild solution, unload-load csproj, close reopen solution és/vagy VS, model törlés-recreate-kód paste, de semmi, ugyanúgy üres a contextem.
Add-nál a read/wrie with views verziót választom, metr ugye kellenének a view-k is.
Ja, meg VS2017-et leszedtem, felraktam a 2019-et, mert olvastam, h 2017-nél bekavarhat a 2-es sdk(ezt jelezte is, nem volt hajlandó lefordulni emiatt, ezért tettem fel inkább a 2019-et, asp.net-nél bepipáltam a .NET Core 2.2 dev toolst is(olvastam, h másnál megoldotta a problémát)). Meg is oldotta, most már szépen lefordul, de controller add-nál továbbra is fennáll a fent említett üres context lista hiba.
Valakinek volt hasonló tapasztalata? -
Keem1
veterán
válasz
user112 #8798 üzenetére
1.) Tranzakciót sok egyforma művelet (insert, delete, update) egymásutáni végrehajtásakor érdemes, sokkal gyorsabb lesz. Több külön lekérdezéseknél semmi előnye nincs. Ezt most adatbázistól függetlenül, általánosságban írtam.
2.) A try-catch a kivételkezelésnél használatos (kivételek elkapása), a using meg az idisposable objektumok kezeléséhez kell. Pl. memóriastream, filestream, adatbázis. Nem sok hasonlóság van köztük, ha együtt láttad őket, az valószínűleg azért, mert adatbáziskezelés közben (using) kivételkezelés is történt (try), mondjuk pl. csekkolják, hogy az adatbáziskapcsolat létrejött-e, tábla létezik-e, stb. Kismillió esetben fordulhat elő.
-
user112
senior tag
Sziasztok!
Adatbázis kezeléssel kapcsolatosan szeretnék kérdezni:
1. Mikor kell, célszerű használni az FbTransaction-t. Minden egyes, egy rekordos insert, update, delete esetén vagy inkább csak scripteknél (gondolom select-nél nem szükséges).
2. A try-catch és a using() között mi a lényeges különbség az adatbázis műveleteknél. Látok példákat külön-külön mindegyikre és a kettő együttes használatára is. Mikor, melyiket kell használni. A try-t értem, hogy kivételt dob és kiíratható a hiba.
A fentiek használata egyformán érvényes server illetve embedded között (Firebird)?
Köszönöm.
-
joysefke
veterán
válasz
dudikpal #8796 üzenetére
Freeman A. - Pro ASP.NET Core MVC 2 (2017)
A fentit kb 1/2-3/4 évvel ezelőtt rágtam át. Nem sok közöm volt előtte az MVC-hez, de a könyv jól felépített, logikus és általában nem éreztem azt hogy rabolná az időmet.
Viszonylag problémamentesen tudtam követni a példákat, az egyedüli komoly nehézség emlékeim szerint az Identity Management-tel foglalkozó fejezetek voltak, amit a könyv írása óta részben átdolgoztak, ezért nem tudod módosítás nélkül átemelni azt, ami példakód az érintett fejezetekben van.
A félkész webshop példa ami a könyvben van némi magyarázattal (és kevés screenshottal) kb 130 oldal. Ebben csak abszolút minimális kliens oldali kód van (Bootstrap + minimális custom JS). Egyébként sem tesz a könyv semmilyen erőfeszítést egy JS-gyorstalpalásra, én ezt előnyként éltem meg, arra nyilván van más anyag, a szerző csak minimálisan kalandozik el szerver oldalról.
Cserében ahogy végigvezeti a (félkész) webshop demót minden új funkcióhoz elkészíti a unit teszteket is.
Azóta sok víz lefojt a Dunán, de a könyv szerintem még mindig jól használható.
-
dudikpal
senior tag
válasz
martonx #8794 üzenetére
Köszönöm mindkettőtöknek az iránymutatást!
Közben persze utánaolvasgattam, és amennyire ki tudtam hámozni, az MCV lesz az irány.
Több helyen is láttam, hogy Reiternek van MCV jegyzete(webshop lépésről-lépésre fordítása, 123 oldalas), viszont a leltöltő link már sehol sem működött.
Nincs meg valakinek esetleg?Egy másik pdf-et sikerült letölteni, a szerző neve most nem jut eszembe, 2-300 oldalas, jelenleg azt bújom.
-
sztanozs
veterán
válasz
dudikpal #8793 üzenetére
c# + webes több rétegű architektúra
A lokál dolgok felett már eljárt az idő. Próbáld meg átemelni e jelenlegi megoldásod webre (külön webszerver, külön auth szerver, külön alkalmazás logika (app szerver) és külön adatbázis szerver. A cél, hogy ezekben csak a szükséges dolgok legyenek megvalósítva és ezek biztonságosan (authentikálva, authorizálva, titkosítva és alárva/ellenőrizve) kommunikáljanak egymással. Néhány helyen nem lesz elég a c#, így fel kell szedned mellé némi JS-t is.
-
dudikpal
senior tag
Sziasztok!
PLC, mikrovezérlő programozás, vagy C# lehetőségek közül arra jutottam, hogy ez utóbbi lesz nálam a befutó, ez "tetszik" a legjobban a felsoroltak közül.
Azoktól kérdezném, akik ebben a környezetben dolgoznak, hogy miket kell alapvetően tudni, akár csak címszavakban is, hogy egy állásinterjún ne röhögjenek ki?
A szakdolgozatom témájának keretében egy gépjármű nyilvántartást készítettem localhost adatbázissal, winformmal, amiben nem sok mindent valósítottam meg idő hiányában(user reg, login, adatok felvitele db-be, userhez kapcsolódó adatok megjelenítése lekérdezéssel).
A tervem az lenne jelenleg, hogy ezt bővítgetem (admin form adatbázis szűréssel, bevitellel, törléssel, update stb...szóval GOD mód,meg egyre bonyolultabb, "magasabb" szintű dolgok implementálása).
Azért esett erre a választásom, mert nem csak kizárólag C# tudásra épül.Ez így szerintetek jó irányvonal, vagy inkább kezdjek egy teljesen más vonalú, új, relevánsabb projektbe?
Ezért is kérdeztem fentebb, mert nem vagyok tisztában manapság mire van szükségük a munkáltatóknak.Ha nem számít mérvadónak vmilyen referencia munka állásinterjún, vagy egyáltalán nem számít, akkor is érdekelne, mert csinálni akarok vmit, gyakorlás, tanulás, okulás miatt. Meg szeretek problémás feladatok megoldásán agyalni
-
joysefke
veterán
Igen komoly munka folyhatott az utóbbi időben a .net csapatnál. Egy csomó minden gyorsul, van ami jelentősen.
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-3-0/
-
-
További segítség kellene. A program szépen teszi a dolgát, a felhasználóktól kiborul. Hiába van a cella dátumra formázva, ha a nap végére pontot tesznek (pláne szóközzel) pl. "2019-05-07. " Attól megbolondul és 1800-as évekbe repít.
string data = null;
addressName = "B1";
theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
if (theCell != null)
{
data = theCell.InnerText;
if (data != "")
{
//itt még variálni kelle a data-val, hogy a végéről levegye a szóközöket és a pontot?
tableDate = DateTime.FromOADate(double.Parse(data, CultureInfo.InvariantCulture));
if (tableDate.ToShortDateString().Equals(DateTime.Now.ToShortDateString()))
{
label_tableDate.Foreground = Brushes.Green;
}
else
{
label_tableDate.Foreground = Brushes.Red;
}
}
else
{
MessageBox.Show("A dátum nincs kitöltve");
error = true;
return;
}
} -
válasz
dudikpal #8785 üzenetére
Brute force módon csinálsz egy flag-et, bool isNameSet = false, első alkalommal a textbox readonly, beállíthatja a nevét, utána mentés, isNameset = true, következő form betöltéskor checkeled hogy milyen állapotban van a változó, ha true, akkor readonlyvá teszed a nevet vagy meg se jeleníted. Például.
-
dudikpal
senior tag
Sziasztok!
Már egy ideje agyalok rajta, de minél jobban próbálom, annál jobban távolodom a képzeletbeli céltól, így inkább rápihenek egyet, de előtte idekérdezek, hátha vki tud segíteni.Adott 1 textbox, amibe a tulajdonos a nevét írhatja be. Viszont ezt csak az első alkalomkor akarnám neki megengedni, mikor regisztráció után felviszi az adatbázisba az első autóját. Utána ha még több autót szeretne felvinni, az egyedi azonosítója alapján lekérdezésből kitölteném ezt a név textboxot, és read only-vá tenném.
Lehetséges ilyen? Gondolom h igen, de ma már túl sok volt a jóból, ilyenkor már nem forog úgy az agyam, túlbonyolít stb
-
martonx
veterán
válasz
Chesterfield #8782 üzenetére
Milyen VS? Én a helyedben újratelepíteném / resetelném a settings-et.
-
Chesterfield
őstag
Tudnátok tippet adni, hogy a Core 2.2 projectemnél miért nem működik a kódformázás visual studióban?
A Class Library projectet beformázza gond nélkül.köszi
-
sztanozs
veterán
-
RedHarlow
aktív tag
C#-ban írtam egy progit, ami megnyit egy olyan weboldalt ahol iframekbe töltődnek be az oldalak, minden oldalon van egy táblázat amelynek adatait ki akartam szedni és összehasonlítsam a saját számítógépemen lévő táblázattal úgy, hogy eredményként az egyezőségeket kapjam. Ez a javascript kód tök frankón működik de visual studioban egyelőre még nem sikerült elérnem az adatokat.
Ui: Kezdő vagyok
-
RedHarlow
aktív tag
Sziasztok, ennek a js kódnak a c# megfelelőjében tudna segíteni valaki?
var matches = document.querySelector('iframe[title^="Valami kezdete "]').contentWindow.document.getElementById("R28_1").value;
alert(matches); -
-
joysefke
veterán
Hali!
nem teljesen értem, mit szeretnél csinálni, vagy a kód amit beszúrtál mit csinál, de a következő észrevételeim lennének:
1,
if (holnap+1=1)
ide szerintem == operátor kéne, nem értékadás. Egyáltalán miért nem kapsz itt hibát, hiszen az értékadás bal oldalán nem változó áll2,
Az if( ) feltételeid egymást mind kölcsönösen kizárják, tehát nem fordulhat elő, hogy egyszerre kettő if-törzsbe belépsz.Sokkal átláthatóbb lenne a kód, ha
if(A) {..}
else if (B) {...}
else if (C) {...}
else {}konstrukciókat használnál.
Sőt, ilyen helyzetben én inkább egyből switch statementet használnék, ami a
holnap
változódtól függően csinálna valamit (adna értéket a listaelemeidnek )3,
Ha ki akarod kerülni ezt a "hét napja" enum-aritmetikát /ami vonzza a hibákat mint a mágnes/, akkor az első dolog ami nekem eszembe jut (persze nyilván vannak más, akár jobb megoldások is) készíteni statikus extension methodokat, amelyek kényelmessé teszik az életedet:
Pld:
public static class DayHelper
{
public static int DaysToMonday()
{
var today = DateTime.Today.DayOfWeek;
var offset = DayOfWeek.Monday - today;
return offset >= 0 ? offset : 7 + offset;
}
public static int DaysToSunday()
{
var today = DateTime.Today.DayOfWeek;
var offset = DayOfWeek.Sunday - today;
return offset >= 0 ? offset : 7 + offset;
}
public static int DaysToMonday(this DateTime date)
{
var day = date.DayOfWeek;
var offset = DayOfWeek.Monday - day;
return offset >= 0 ? offset : 7 + offset;
}
Stb stb stb
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DayHelper.DaysToMonday());
Console.WriteLine(DayHelper.DaysToSunday());
Console.WriteLine(new DateTime(2019, 4, 20).DaysToMonday());
Console.WriteLine("Hello World!");
}
}Innentől kezdve, ha hívsz a kódodban egy ilyet hogy:
DayHelper.DaysToMonday()
akkor visszaadja a hétfőig hátralevő napok számát. Ezt nyilván meg tudod csinálni a hét összes napjára.Ha pedig van egy DateTime típusú változód, akkor azon meghívva a DaysToMonday()-t visszaadja az adott dátumtól a hétfőig visszalevő napok számát. Pld:
Console.WriteLine(new DateTime(2019, 4, 20).DaysToMonday());
Visszaadja hogy 20-i dátumtól kezdve mennyit kell aludni hétfőig.
-
Az jó ha nem kap értéket ("" lesz), mert akkor arra napra nincs adat. Csak a mai, holnapi, és a mától számított 2., 3. , és 4. nap tartalmaz adatokat.
Az if-else nekem is eszembejutott, de a switch se rossz ötlet.A táblázatból kell egy .txt készítenem, amit majd beolvas az AfterEffect, de abban a hét mindenn napja fel van sorolva. Mivel az AE-hez még annyira sem értek, kénytelen vagyok a kollégám által kitalált formulához igazodni.
Köszi a tippeket!
-
vlevi
nagyúr
Ez így biztosan nem jó. Ha az utolsó if, vagyis a holnap+3=1 nem teljesül, mindenképp üres lesz a két elem.
Vagy az egészet egymasba ágyazott if else szerkezetekbe rakod, vagy a switchcase ilyen esetben jobb.
Vagy előre feltöltést egy constans tömböt az eredményekkel, és csak abból választasz.
Arra is vigyázz, hogy a dayofweek angol területén vasarnap az 1, Magyarországon a hétfő. Itt is érdemes használni a culture paramétert. -
Már frankón megy a hét napjának detektálása, de egy kis optimalizáció kellene, ugyanis a cél az, hogy ki kell deríteni hogy a hét napjai a mai napot követő 2., 3., vagy 4. napra esnek-e, és ettől függően más más értékkel töltöm fel őket. Most ott tartok, hogy
holnap = (int)datumErtek.DayOfWeek + 1;
// Hétfő 2. nap?
if (holnap+1=1)
// Igen
{
lista [16] = nap1_minimum;
lista [17] = nap1_maximum;
....
}
else
// Nem, vagyis nem kap értéket
{
lista [16] = "";
lista [17] = "";
....
}
// Hétfő 3. nap?
if (holnap+2=1)
// Igen
{
lista [16] = nap2_minimum;
lista [17] = nap2_maximum;
....
}
else
// Nem, vagyis nem kap értéket
{
lista [16] = "";
lista [17] = "";
....
}
// Hétfő 4. nap?
if (holnap+3=1)
// Igen
{
lista [16] = nap3_minimum;
lista [17] = nap3_maximum;
....
}
else
// Nem, vagyis nem kap értéket
{
lista [16] = "";
lista [17] = "";
....
}És így tovább a hét minden napjára. Tudom ezt egyszerűsíteni/optimalizálni, vagy végig kell kódolni, vizsgálni a hét minden egyes napjára?
-
joysefke
veterán
C# In depth 4th edition
Ez nem rég jelent meg, és a korábbi kiadásokról jókat olvastam, bár nem forgattam őket sosem. Én a 7.0-val kezdtem, ezért a C# 7 in a nutshell könyvet forgatom olvasmányos referenciaként ami azért még elég aktuális.
Tehát volt már valakinek a kezében ez a C# in depth 4? Mit tud adni a C# 7 in a nutshellhez képest?
Egy picit utánaolvastam és a szerző azt ajánlja, hogy az olvasó szekvenciálisan haladjon, ami egy kicsit bosszant, mert a fejezetek alapján az érdekes részek a végén vannak...
Üdv
J. -
-
-
Van lehetőség arra, hogy egy adott dátumból megmondjam, hogy a hét melyik napjára esik -».dayOfWeek
De nekem nem a nap neve, kell, hanem a sorszáma. hétfő =0, kedd =1,... Van erre valami trükk? -
joysefke
veterán
válasz
Froclee #8758 üzenetére
Az async void-dal egy csomó helyen meg van kötve az ember keze.
Event handlerek tipikusan void implementációt akarnak, ott csak az async void jöhet szóba.
Most egy xamarin projekt van előttem megnyitva:
tipikus event handler:
private async void Trending_Clicked(object sender, EventArgs e)
{
await Navigation.PushAsync(new TrendingPage());
}Ez meg egy lifecycle override az ősosztályon, csak async void-ot fogad el
protected override async void OnAppearing()
{
base.OnAppearing();
await something(...)
}szóval én kerülöm ezt az async void dolgot mint a pestist a saját metódusaimban, de amikor az interfész rákényszerít, akkor mit tudnék mást tenni?
-
joysefke
veterán
válasz
Froclee #8758 üzenetére
Azt elfogadom, hogy az async void Dispose() nem működik úgy ahogyan én azt elvárnám
A compiler az IDisposable interfészre -és úgy általában minden void visszatérésű metódusra- figyelmeztetés nélkül elfogad egy async void implementációt.
Ez fordul és fut (C# 7.1+):
using System;
using System.Threading.Tasks;
public interface iface
{void func1(int delay);
Task func2(int delay);}
class Program : iface
{
static async Task Main(string[] args)
{
Program p = new Program();
Console.WriteLine($"starting {nameof(p.func1)}");
p.func1(3500);
Console.WriteLine($"{nameof(p.func1)} started");
Console.WriteLine($"starting and awaiting {nameof(p.func2)}");
await p.func2(2000);
await Task.Delay(3500-2000 + 500);
}
public async void func1(int delay)
{await Task.Delay(delay);
Console.WriteLine($"Hello from {nameof(func1)}");}
public async Task func2(int delay)
{await Task.Delay(delay);
Console.WriteLine($"Hello from {nameof(func2)}");}
}A
p.func1()
hívás nem await-elhető, de működik raja az async keyword, a func1 implementációján belül a compiler kulcsszóvá alakítja az await-et és a func1-en belül awaithelhetőek lesznek az async metódusok. A példában a func1 törzsében a végrehajtás előbb bevárja a Task.Delay()-t és csak aztán ír a konzolra.Szóval ez az async void dolog minden hibájával együtt nagyjából működik.
Ezért nem értem, hogy az xUnit-ban egy async void Dispose hívásban a végrehajtás a Dispose metódus törzsében miért hagyja figyelmen kívül az await kulcsszót, elindítja a Task-ot amit kiadtam neki, de nem várja be
.. .
-
joysefke
veterán
válasz
Froclee #8750 üzenetére
Köszi, és tényleg erre volt szükségem. Itt a lényeg. Holnap kipróbálom
-
cattus
addikt
válasz
kkdesign #8751 üzenetére
Felteszem mostanában kezdtél programozni, így én nem igazán ajánlanék még Linq-s megoldást, az egy ilyen bonyolultságú feladatra ágyúval verébre kategória.
Gondold végig, mi a probléma és hogyan lehetne megoldani. Leírom az én gondolatmenetemen (kódot szándékosan nem, jobb, ha azt magad vezeted le):
Hozz létre egy változót, amiben tárolod az eddigi leghosszabb sorozat hosszát (kezdetben 0, legyen a neve mondjuk max_lenght). Végig kell iterálni a tömbön. Minden számra meg kell nézni, hogy 0-e, vagy nem. Ha nem nulla, akkor ugye ahogy te is gondoltad, növelsz egy számlálót (legyen a neve mondjuk current_lenght, kezdetben 0 ez is). Ha nullát találsz, akkor megnézed, hogy a most talált sorozatod hosszabb-e, mint az eddigi. Ha igen, akkor felülírod a max_lenght-et, és nullázod a current_lenght-et.
-
moseras
tag
válasz
kkdesign #8751 üzenetére
Hello,
Nem teljesen tiszta, hogy mit is akarsz pontosan, valami ilyenre gondoltál ?
static int convert(List<int> l1)
{
int ret = 0;
foreach (var e in l1)
{
ret *= 10;
ret += e;
}
return ret;
}
static void Main(string[] args)
{
var szamok = new List<int>() { 0,0,1,5,7,3,0,0,1,2,3,0,0,5,8,7,4,5,0,1,2,5,8,9 };
// Az eredeti számsorozat
Console.WriteLine($"Az eredeti számsorozat: { string.Join("", szamok) }");
// A nem 0 értékű számjegyek száma
var c1 = szamok.Count(x => x != 0);
Console.WriteLine($"A nem 0 értékű számjegyek száma: { c1 }");
var temp = new List<int>();
var leghosszabb_szamok = new List<int>();
int maxx = 0;
foreach (var item in szamok)
{
if (item != 0)
{
temp.Add(item);
}
else
{
if (temp.Count > 0 && temp.Count >= maxx)
{
leghosszabb_szamok = leghosszabb_szamok.Where(n => Math.Floor(Math.Log10(n) + 1) >= maxx).ToList();
leghosszabb_szamok.Add(convert(temp));
maxx = temp.Count();
}
temp.Clear();
}
}
if (temp.Count > 0 && temp.Count >= maxx)
{
leghosszabb_szamok = leghosszabb_szamok.Where(n => Math.Floor(Math.Log10(n) + 1) >= maxx).ToList();
leghosszabb_szamok.Add(convert(temp));
}
// A leghosszabb számjegyű szám(ok)
Console.WriteLine($"A leghosszabb számjegyű szám(ok): { string.Join(", ", leghosszabb_szamok) }");
// A leghosszabb számjegyű szám(ok) jegyeinek száma
Console.WriteLine($"A leghosszabb számjegyű szám(ok) jegyeinek száma: { maxx }");
}Eredmény:
Az eredeti számsorozat: 001573001230058745012589
A nem 0 értékű számjegyek száma: 17
A leghosszabb számjegyű szám(ok): 58745, 12589
A leghosszabb számjegyű szám(ok) jegyeinek száma: 5Ha jól értem, akkor neked kellene
- az eredeti sorozat nem 0 elemeinek száma
- a leghosszab jegyű szám(ok) külön listába gyűjtve
- a leghosszab jegyű szám(ok) jegyeinek számaImi.
-
joysefke
veterán
válasz
Froclee #8750 üzenetére
async void-ot soha tobbe ne tegyel egy mondatba.
Ezzel tisztában vagyok, sokat olvastam már az async-ról, tudom, hogy ha van választási lehetőség akkor async Task visszatérést kell használni void helyett.
De egy csomó szituációban ahol egy interfész egy metódust void visszatéréssel deklarál nem tudsz Task visszatérést implementálni. Pld az IDisposable nem fogadja el a Task visszatérést.
A linket köszi, megnézem!!
-
kkdesign
senior tag
Sziasztok!
Van egy házi feladatom! Tanácsot szeretnék kérni azzal kapcsolatosan. Illetve iránymutatást, és nem teljes megoldást!
Van egy mondjuk 50 hosszúságú int vektorom.
Ez fel van töltve számokkal, ahol a párosak értéke 0-ra lett állítva.Azt kellene tudnia a programnak, hogy ha az egymás utáni számok nem 0-k akkor adódjanak egy számoló értékhez. Pl a vektor egy részlete: 00157300 akkor a számláló értéke 4 legyen.
Az aminél elakadok, hogy ez hogy tud dinamikusan növekvő lenni? A végén a vektorban lévő leghosszabbal kell dolgoznom, onnan az menne, de itt elakadtam.
Eddigi gondolatmenetem:
For(i= 1től; vektor.Lenth-ig ;i++)
{
ha(vektor[i] !=0 és vektor[i+1] !=0)
akkor
{
nemnullaszamhossza++;
}
}
viszont ha a kövi 0, akkor nulláznia kellene az előzőt, míg a maximális hosszt eltárolja.
hol hal el a gondolatmenetem? -
A beolvasást áttettem a GetCellValues-ba:
public void GetCellValues(string fileName, string sheetName)
{
...
// Éjjel
addressName = "B4";
Cell theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
// If the cell does not exist, return an empty string.
if (theCell != null)
{
adat = theCell.InnerText;
if (adat != "") ejszaka_min = int.Parse(adat);
else
{
MessageBox.Show("Az éjszakai minimum hőmérséklet nincs kitöltve");
hiba = true;
return;
}
}
addressName = "C4";
theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
...
}Így már jó(bb)?
-
-
dqdb
nagyúr
Az Excel fájlban a B1 mezőben van a dátum, nem a B2-ben, ahogyan a forrásban szerepel.
Két megjegyzés:
1. oké, hogy az elvi lehetőség adott a közel teljes UTF8 használatára a forráskódban a szimbólumok nevéhez, azonban nem túl szerencsés ékezetes függvény- és változóneveket használni (és úgy általában nem angolt sem)
2. a GetCellValue metódust át kellene dolgozni, mert jelenleg minden érték kiolvasásánál megnyitod az Excel fájlt, megkeresed a munkalapot, ott mezőt, kiolvasod, majd lezársz mindent -
dqdb
nagyúr
Ha az Excelben adott mező formátuma dátum, akkor a
GetCellValue
függvényből egész számot kapsz vissza szövegként, ha idő, akkor egynél kisebb törtet, ha dátum és idő, akkor törtet. Ha van törtrész, akkor a szövegben tizedespont szerepel, amire aDouble.Parse(value)
akkor fog lefutni, ha olyan regionális beállításod van, ami tizedespontot használ, vagy második paraméterként átadsz egy ilyen locale-t. Az előző hozzászólásomban szereplőCultureInfio.InvariantCulture
ilyen, írd be, és működni fog.43566.556944444441 => 2019.04.11. 13:22:00
43567 => 2019.04.12. 0:00:00 -
-
Elakadtam a dátumnál. A példa alapján, ha dátum van a cellában akkor
// Retrieve the date value in cell A2.
value = GetCellValue(fileName, "Sheet1", "A2");
Console.WriteLine(
DateTime.FromOADate(double.Parse(value)).ToShortDateString());Viszont nálam ez system.formatexception hibára fut.
+ Mit jelent az, hogy For dates, this code returns the serialized value that represents the date. ?
Valami trükk van a dologban, mert ha csak simán kiíratom a szöveget(Console.WriteLine(value);
), akkor semmi nem jelenik meg. -
RedHarlow
aktív tag
Sziasztok,
Van egy java alapú weboldal, egy jegykezelő, minden jegynél van egy lista, hogy kik vásárolták meg. Ez a lista a chrome vizsgálójában tökéletesen látható a forráskódban azonban ha c#-al kezdem olvasni az oldalt akkor egy tök csupasz html-t kapok. Volt már valakinek szerencséje ilyenhez? Valaki tud esetleg valami leírást hogy hogy használható fel az ilyen alkalmazások adatai? Ezeket a jegyeknél lévő listákat szeretném összevetni a saját excelben lévő listámmal.
-
joysefke
veterán
xUnit Dispose vs Async hogyan?
Sziasztok!
Nagyon új nekem ez az xUnit, tegnap kezdtem
és nem hiszem, hogy jól használom az Async metódusomatot a Dispose()-ban: működik, de nem teljesen azt csinálja a kód amit szeretnék/elvárnék...
Az adott xUnit test class egy külső API interfészről történő lekérdezést tesztel.
Az xUnit osztály konstruktorában van a setup kódom, itt többek között kreálok egy
frisssessionId
-t amitől a teszt végén mindenképpen meg kell szabadulnom.
A "megszabadulás" egy AsyncDeleteSession(string sessionId)
hívás formájában kell megtörténjen, ezért ezt beraktam a teszt osztálypublic async void Dispose()
metódusába.A problémám az, hogy a Dispose() metódusban a végrehajtás látszólag túljut az
await DeleteSession()
-ön, ezt onnan látom, hogy a SessionId törlődik a külső rendszerből.
De a DeleteSession() utáni szinkron utasítások már nem hajtódnak végre.Itt a kód!
Osztály deklaráció, konstruktor és Dispose:
public class GetAccountDetailsTests : IDisposable
{
// Setup
public GetAccountDetailsTests(ITestOutputHelper output)
{
// csak a lényeg:
_getSession = hot task indul
}public async void Dispose()
{
// nem annak látszik, de ez SZINKRON, a Task már elkészült
var sessionId = (await await _getSession).SessionId;
_output.WriteLine($"Teardown: DeleteSession({sessionId}) called...");
// ez biztosan most indul és a külső szervizből látszólag
// törlődik a session tehát a lényegi dolgát elvégzi,
// NEM tud exceptiont dobni
// (elnyeli őket) kóddal jelzi ha hiba volt
var result = await _client.DeleteSession(sessionId);
// Ide nem jut el a végrehajtás, nem ír semmit az outputba
var code = result.HttpStatusCode.ToString();
_output.WriteLine($"Teardown: DeleteSession(...) returned with {code}");
}Teszt metódus belseje, try-catch-ben, hogy biztosan eljusson a Dispose-ig:
public async void WhenValidArguments_ReturnsAccountDetails()
{
// Arrange
var sessionId = (await await _getSession).SessionId;
// Act
var result = await _client.GetAccountDetails(sessionId);
AccountDetailsModel account = JsonConvert.DeserializeObject<AccountDetailsModel>(result.Json);
// Assert
Assert.True(result.HttpStatusCode == System.Net.HttpStatusCode.OK);
Assert.True(account.AccountName == _settings.AccountName);
}Nem tudom hogyan kéne értelmesen debuggolni a tesztet, hiába rakok a Dispose-ba breakpointot átugrik rajta amikor a VS "Debug selected test" opciójával indítom.
-
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.
-
RedHarlow
aktív tag
Ez már megtörtént közben, REF.*\.xml-re jutottam, de unrecognised escape characterre jutottam. Stackoverflow-on\googleben\youtubeon is kerestem hasonló hibákat de nem igazán jött össze. Másfél óra önálló keresés alatt nem írok be ide semmit.
-
RedHarlow
aktív tag
válasz
moseras #8732 üzenetére
Lenne még egy olyan eset, hogy REFblabxxsokszámxxxblabla.xml fájlokat kellene számolnom, úgy, hogy azok tényleg fájlok legyenek tehát legyen .xml kiterjesztésük és REF-el kezdődjenek. Tehát ezt szeretném valahogy megadni keresési opciónak:
REF*.xml
Előre is köszönöm a segítséget!
-
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
-
RedHarlow
aktív tag
Sziasztok,
Regex.Matxhes-el megoldható egyszerre több szó keresése?
A (B)class, xml, xlsx(/B)-eket szeretném megszámolni egy fájlban.int appcount = Regex.Matches(text, @"\.class\b").Count;
-
RedHarlow
aktív tag
A fájl beolvasásával van valami baj szerintem, mert ha Rock.Text sima szöveg akkor abban megtalálja amit kell. :/
-
RedHarlow
aktív tag
Csatolom:
public static string getBetween(string strSource, string strStart, string strEnd)
{
int Start, End;
if (strSource.Contains(strStart) && strSource.Contains(strEnd))
{
Start = strSource.IndexOf(strStart, 0) + strStart.Length;
End = strSource.IndexOf(strEnd, Start);
return strSource.Substring(Start, End - Start);
}
else
{
return "";
}
}
private void Button2_Click(object sender, EventArgs e)
{
ofd.Filter = "TXT|*.txt";
ofd.Title = "Please select Rock";
ofd.FileName = "Rock_*";
if ((ofd.ShowDialog() == DialogResult.OK))
{
textBox1.Text = ofd.SafeFileName;
var filepath= ofd.FileName;
Rock.File = filepath;
Rock.Text = File.ReadAllText(Rock.File).ToLower();
string data = getBetween(Rock.Text, "Rockband name: ", "\n");
MessageBox.Show(data);
HotFix.HFID = data;
} -
RedHarlow
aktív tag
Sziasztok,
Van esetleg valakinek olyan txt keresője, ami egy adott szó után lévő pár karaktert elmenti változóként? Be szeretnék tallózni egy fájlt és egy bizonyos érték érdekelne belőle amit később a programban használni szeretnék.
ui: Kezdő vagyok, ne öljetek meg
-
ondedrive-ról hogy tudok letölteni egy fájlt? Ha csak a megosztáss linket adom meg a webClient.DownloadFile()-nak, akkor csak egy html oldalt tölt le. -
Köszi! Sikerült is beolvasni pár cellát, de ha éppen üres, attól kiborul. Ha pedig nem numerikus érték (szám) van az adott cellában, akkor nem a szöveget adja vissza, hanem egy számot. De hogy pl. a "teszt"-ből hogyan lesz 9 az nem teljesen világos.
Tuti valamit rosszul csinálok, de mit?
Ez a kód -
dqdb
nagyúr
Az Office interop arról szól, hogy egy futó/akkor elindított Excel alkalmazást vezérelsz távolról a COM interfészén keresztül, hogy hajtson végre ilyen-olyan műveleteket, így mindenképpen telepített kliens kell neki mind fejlesztés közben, mind máshová feltelepítve.
Ha Excel telepítés nélkül szeretnél .xlsx fájlokat kezelni, akkor nézz rá az EPPlus és Open XML SDK projektekre.
-
-
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.
-
RedHarlow
aktív tag
Megnéztem textBox1.Text-et ha átállítom a teljes útvonalra, ofd.FileName akkor tökéletes feltölti a betallózott fájlt. Szóval tényleg a pcpath változóm mentésével lesz a gond, tudnál segíteni hogy hogy tudom valódi változóként elmenteni?
-
RedHarlow
aktív tag
válasz
joysefke #8718 üzenetére
Itt tallózom be a fájlt és mentem el mint változó, pcpath.
// Browser/Counter/Path save - PC
private void button1_Click(object sender, EventArgs e)
{
ofd.Filter = "TXT|*.txt";
if ((ofd.ShowDialog() == DialogResult.OK))
{
textBox1.Text = ofd.SafeFileName;
var pcpath = ofd.FileName;
string text = File.ReadAllText(pcpath).ToLower();
int pccount = Regex.Matches(text, @"\balma\b").Count;
label2.Text = Convert.ToString(pccount);
}
}Egy másik gombbal pedig szeretném feltölteni ugye, ha nem változót használok akkor simán feltölti a fájlt igen. Nem jól hoztam létre a változót a tallózásnál? Kicsit olyan mintha csak az adott résznél tudnám használni a változót máshova nem dobja át az értékét.
-
joysefke
veterán
Minimális programozás tudás nélkül ez nem fog menni...
Korábban egy betallózásról írtál. Feltételeztem, hogy a betallózott fájl útvonala van a pcpath változóban.
De neked még ilyen nevű változód sincsen. Nem értem honnan szedted
Első körben, hogy kiderüljön működik-e ez az egész, teszt jelleggel cseréld le a pcpath nevet egy létező nem túl nagy fájl útvonalára pld: @"\tmp\test.txt" . Ez lesz a PutFiles első argumentuma.
És ellenőrizd le, hogy ez a putfiles metódus ez fájl útvonalat is elfogad-e vagy mindenképpen mappa útvonal kell-e neki. Te betallózott fájlról írtál, de a példakódban az első arguáentum az könyvtár
-
RedHarlow
aktív tag
válasz
joysefke #8714 üzenetére
Igen, közben megtaláltam.
A következő kérdésem, hogy itt, hogy tudom használni a pcpath nevű változóm, ami a betallózott fájlom útvonala?
session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
(@"pcpath", "/home/user/", false, transferOptions)("pcpath", "/home/user/", false, transferOptions)Ezeket próbáltam de nem működik így.
Exception thrown: 'WinSCP.SessionRemoteException' in WinSCPnet.dll
The thread 0x2bcc has exited with code 0 (0x0).
'pcpath' fájl vagy mappa nem létezik.
Rendszerhiba. Kód: 2.
A rendszer nem találja a megadott fájlt
The program '[17652] WindowsFormsApp1.exe' has exited with code 0 (0x0). -
RedHarlow
aktív tag
Sziasztok!
WinSCP-n keresztüli fájlátvitelt csinált már valaki Visual Studio / C# segítségével? Sehogy se sikerül használni a hivatalos oldalon megadott kódot. Az alábbi hibákat kapom:
The type or namespace WinSCP could not be found.
The type or namespace Protocol could not be found.
The type or namespace SessionOptions could not be found.
The type or namespace TransferOptions could not be found.KÓD
using System;
using WinSCP;
class Example
{
public static int Main()
{
try
{
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "user",
Password = "mypassword",
SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:..."
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult =
session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
}
}
return 0;
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e);
return 1;
}
}
} -
Létezik olyan módszer, amivel egy onedrive-ban tárolt excel-ből veszek ki adatokat anélkül, hogy letölteném, és megnyitnám mint sima excel fájl?
Mondjuk még csak ott tartok, hogy nem tudom hozzáadni a "Microsoft Excel xx.xx Object library", mivel nincs a listában. Ez lehet, a Community edition gyengesége, vagy valamit még nem telepítettem fel? -
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).
-
RedHarlow
aktív tag
Sziasztok,
Tudna valaki segíteni egy szókereső szkript megírásában? Visual Studioval kezdtem ismerkedni, szeretném ha a betallózott fájlban megszámolná, hogy hányszor szerepel egy bizonyos szó, majd elmentené azt egy változóba. A neten rengeteg keresőt találtam de ilyet pont nem.
Link is jó esetleg.
-
válasz
DrojDtroll #8703 üzenetére
Git
-
cattus
addikt
válasz
DrojDtroll #8703 üzenetére
Git
-
DrojDtroll
veterán
Milyen verziókövetést használtok?
Én a Microsoft tfs-es megoldását a tfvc-t de elég bug-osnak tűnik néha. Van közöttünk valaki aki ugyanezt használja? Ha igen, milyen hibákkal találkoztatok eddig?
-
DrojDtroll
veterán
Sziasztok!
Gondolom a legtöbben itt Visual Studiót használunk a fejlesztéshez. Elég lusta vagyok ezért sokszor inteli menüből generálok metódust. Mért tart ez néha nagyon sok ideig?
-
t-shirt
veterán
válasz
Zalanius #8700 üzenetére
Köszönöm!
Próbálkoztam én az eseménykezelő hozzáadásával is, de rosszul használtam a sender-t. Az esemény elindításával meg nem értem semmit mert nem tudtam megállapítani hogy melyik kiválasztásra indult el.
Hibásan a "sender.ToString()" -el próbálkoztam a "((RadioButton)sender).Text" helyett.
Köszönöm, így most már jó
Ú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!
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Álláskeresés, interjú, önéletrajz
- ASUS routerek
- Kerékpárosok, bringások ide!
- Samsung LCD és LED TV-k
- ThinkPad (NEM IdeaPad)
- A fociról könnyedén, egy baráti társaságban
- Starlink
- Konzolokról KULTURÁLT módon
- Egy szenzor, két zoomkamera: újraírta a Huawei a mobilfotózás történetét
- További aktív témák...
- Csere-Beszámítás! RTX Gamer Számítógép PC Játékra! I5 12400F / RTX 3070 / 32GB DDR4 / 1TB SSD
- AKCIÓ! AMD Ryzen 7 3800X 8mag 16szál processzor garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone i5 10600KF 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- MSI CYBORG 15 A13V
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest