- Megérkezett a Google Pixel 7 és 7 Pro
- iPhone topik
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Egy szenzor, két zoomkamera: újraírta a Huawei a mobilfotózás történetét
- 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
Új hozzászólás Aktív témák
-
joysefke
veterán
http://www.c-sharpcorner.com/article/C-Sharp-heaping-vs-stacking-in-net-part-i/
Ez egy régebbi cikksorozat, de a lényeg azóta nem változott. rágd magad át rajta.
-
Alexios
veterán
Hogyne tanítanák progmaton, a tárgyból már nem emlékszem(Programozás vagy C++ volt talán?) de szó volt azért ilyen alap memória kezelés dolgokról nyilván. Ha meg csak a Stack mint algoritmusról van szó pláne
De azért ezek tényleg az alapok c#-nál is, referencia/érték típusok, boxing, stb, szó volt róla, hogy junior c# pozi van megcélozva korábban, ezeknek illene utánanézni előtte.
-
Keem1
veterán
A stack egy olyan tárolási elv, amikor az először bekerülő adat a tároló aljára kerül, a többi rá. Mindig a legfelső adatot éred el, míg az alján lévőt csak akkor, ha kikerült a többi a tárolóból.
First in, last out.Huh mennyi memória számítási feladat volt a fősulin
De ezt progmat szakon nem tanítják? Én mondjuk mérnök informatikus szakot végeztem, ahol a hardver legalább olyan súlyos volt (ha nem súlyosabb), mint a szoftver.
-
Orionk
senior tag
Sziasztok,
A memóriában mit jelent a HEAP és STACK rész?
Azt tudom, hogy ha new módosítóval foglalunk le valamit, akkor a Heap-be kerül és ha a program nem szabadítja fel, mert pl. nincs Garbage Collector, akkor nekünk kell gondoskodni róla.
A Stack pedig az a rész, ahol a primitív típusok foglalódnak le, pl. int, float.De ezeken felül mit jelent ez a két memória terület?
köszi -
Zalanius
tag
Szia,
nem pontosan értem a részleteket, de az biztos, hogy a bitmappel kapcsolatban nincs művelet a függvényedben, talán csak ennyi hiányzik. Az a kód egy körnegyedet rajzolna nagyjából. A "hullám" alapján valami hasonlóra gondoltam, aztán ha más a változók értelme, mint a tippem, akkor azt is igazítani kell:public void Hullam(Bitmap bmp, int x0, int y0, int r, double alfa1, double alfa2, Color szín)
{
double x = 0, y = 0;
while (x*alfa1 < bmp.Width - x0 && y < y0)
{
y = alfa2 * Math.Sin(x);
bmp.SetPixel((int)(x0 + x *alfa1), (int)(y0 - y), szín);
x += 0.01;
}
this.Refresh();
} -
#hpq
aktív tag
válasz
Zalanius #7991 üzenetére
Szia!
Nagyon köszönöm a segítséget, tényleg ez volt a gond, hogy nem abba az eseménybe írtam bele.
A következő kérdésem az lenne, hogy egy hullámot szeretnék kirajzoltatni de, nem működik akár mennyire próbálkozom és nem jövök rá hol lehet a probléma.Nagyon szépen köszönöm az eddigi munkádat és segítségedet, nagy szükség volt rá!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp6
{
public partial class Form1 : Form
{
public Color szín = Color.Red;
//függvényeim
public void Kör(Bitmap bmp, int x0, int y0, int r, double alfa1, double alfa2, Color szín)
{
double num1 = 1.0 / (double)r;
int num2 = alfa1 - alfa2 < 0.0 ? 1 : -1;
double num3 = alfa1;
while ((double)num2 * num3 <= (double)num2 * alfa2)
{
int num4 = (int)((double)r * Math.Cos(num3));
int num5 = (int)((double)r * Math.Sin(num3));
if (!this.checkBox1.Checked)
this.Refresh();
num3 += (double)num2 * num1;
}
this.Refresh();
}
//eseményeim
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
}
private void button1_Click(object sender, EventArgs e)
{
int x0 = 10;
int y0 = 10;
double alfa1 = 40;
double alfa2 = 10;
int r = 20;
Kör((Bitmap)pictureBox1.Image, x0,y0,r,alfa1,alfa2,szín);
}
}
} -
eddie17
addikt
Megoldódott.
-
Zalanius
tag
Egy kis pozícionálási hiba van abban a kódban, így ebben a formában nem is fordulhat le. Ez a két sor van rossz helyen:
int x1 = int.Parse(textBox1.Text);
int y1 = int.Parse(textBox2.Text);Egyből az egy fordítási hiba, hogy nem adható két ilyen mezőnek kezdőérték másik mezőből. De ebben most nem is kell elmerülni, mert a célod a futás közben beírt értékek kiolvasása, tehát a két sor helye a button1_click metódusban van, még a Szakasz2 hívás előtt. A Parse metódusról tudni kell, hogy feltételezi az input megfelelő formátumát, tehát két töküres textbox esetén kivételre futsz vele. Szöveges tartalom esetén szintén. Hasznos olvasnivaló lehet ezért: Int32.TryParse.
-
#hpq
aktív tag
válasz
Zalanius #7978 üzenetére
Szia!
Köszi az előző hozzá szólást nagyon sokat segített.
A következő lenne a kérdésem, az előző feladatot kiegészítettem 2db textbox-szal ami a szakasz egyik koordinátáját olvassa be (ami az x1, y1).
Valamiért nem fut le és nem jövök rá, hogy mi a hiba.Előre is nagyon köszi a segítségedet!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp6
{
public partial class Form1 : Form
{
public Color szín = Color.Red;
int x2 = 100; int y2 = 100;
//függvényeim
int x1 = int.Parse(textBox1.Text);
int y1 = int.Parse(textBox2.Text);
public void Szakasz2(Bitmap bmp, int x1, int y1, int x2, int y2, Color szín)
{
int hx = x2 - x1;
int hy = y2 - y1;
int h = Math.Max(Math.Abs(hx), Math.Abs(hy));
if (h == 0)
{
bmp.SetPixel(x1, y1, szín);
}
else
{
double lx = 1.0 * hx / h;
double ly = 1.0 * hy / h;
double x = x1; double y = y1; bmp.SetPixel((int)x, (int)y, szín);
for (int k = 1; k <= h; ++k)
{
x += lx; y += ly; bmp.SetPixel((int)x, (int)y, szín);
}
}
Refresh();
}
//eseményeim
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Szakasz2((Bitmap)pictureBox1.Image, x1, y1, x2, y2, szín);
}
private void Form1_Load(object sender, EventArgs e)
{ pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); }
}
} -
don_peter
senior tag
válasz
don_peter #7988 üzenetére
Közben elkészült a program és szerencsére jól működik..
A 16bit-es színképzés okozott némi fejtörést, de végül megadta magát..A kép bináris átalakítása is szépen megtörténik, szóval minden jól alakult.
A kérdés még fent állhat, hogy minek is kellett ez, hát ehhez:
DPTP System - Időjárás állomás beltéri -
joysefke
veterán
-
Goose-T
veterán
válasz
don_peter #7984 üzenetére
Egyszerű, akkor nem kell levenni előle a 0x-et, lehet úgy is parse-olni. Itt találsz egy példát, hogyan kell csinálni.
-
Goose-T
veterán
válasz
don_peter #7980 üzenetére
string input = "0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0968, 0x0148, 0x0968, \n 0x0148, 0x0969, 0x0148, 0x0988, 0x0168, 0x0168, 0x0168, 0x0168, 0x0968, 0x0988";
var list = input.Split(',').Select(s =>
{
string clean = s.Trim().Replace("0x", String.Empty);
if (int.TryParse(clean, out var number))
{
return number;
}
return 0;
})
.ToList();Így lehet mindent egyszerre megcsinálni. Először splittelni kell, utána trimmelni (ez kiveszi a whitespace karaktereket), aztán kiszedni a 0x-eket, majd a végén meg kell próbálni int-ként parse-olni. Ha nem sikerül, akkor 0-t adunk vissza. Egyébként ha 0x van az elejükön, akkor ezek véletlenül nem hexadecimális számok akarnak lenni?
-
don_peter
senior tag
Srácok, küzdök egy kis problémával, de nem akar össze jönni. Valószínű nem jól csinálom és sajna régebben sem értettem pontosan, hogy működik a stringből való karakter kiszedés.
Azt hiszem split metódust kellene használnom, de a mintát nem tudom megadni. (persze lehet nem is jót nézek)A lényeg, hogy van egy nagyon hosszú string-em, pl.:
0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0968, 0x0148, 0x0968,
0x0148, 0x0969, 0x0148, 0x0988, 0x0168, 0x0168, 0x0168, 0x0168, 0x0968, 0x0988
Szeretnék minden sallangot kivenni a string láncból.
Vagy is nem kellenek a szóközök, nem kellenek a sortörések és a vesszőknél el kellene őket választani, vagy is tömbösítve elkülöníteni őket. Még nem tudom, hogy ebben a formában képes leszek e majd átalakítani int típussá őket, de ennyire nem akarok előre szaladni. (lehet a 0x-eket is el kell távolítani a stringből)Előre is köszi..
-
togvau
senior tag
Hello
Még mindig egy WPF gui-ban szeretnék egy progress bar szerűséget csinálni, és a GUI/xaml osztály egy másik osztály metódusát hívja meg, amin belül Parallel.ForEach-ben megy a lényeg, de ha onnan akarom frissíteni a GUI egyik komponensének értékét akkor persze
The calling thread cannot access this object because a different thread owns it.
Installer.MainWindow.thiswindow.downbutton.Dispatcher.Invoke(() =>Installer.MainWindow.thiswindow.downbutton.Content = "Downloaded " + counter + " of " + fileset.Count + " files");
Ez pedig ha bent van a foreachben belassítja az műveleteket, és ha kész van, nem lép ki a foreachből soha, mellesleg nem is változtatja a contentet.
Hogy lehet működőre megcsinálni?
Mellesleg hogy lehet a gazda GUI példányt lekérdezni? Mert a thiswindow változót a gui adja meg paraméterként az osztály létrehozásakor, ami gáz megoldás.
-
Zalanius
tag
Szia,
nagyjából látom, mit akarsz kihozni abból a kódból, de az Image property kasztolásakor szerintem gond lesz a referenciával (és/vagy a picturebox viselkedésének is utána kellene nézni a pontos magyarázathoz). Azonkívül ha a gombkattintásra akarod húzni a vonalat, akkor ne a pictureBox1_Click metódusba írd, hanem a button1_Click-be. Első körben:
Bitmap temp = (Bitmap)pictureBox1.Image;
Szakasz2(temp, x1, y1, x2, y2, szín);
pictureBox1.Image = temp;Nyilván lehetne még polírozni, de ebből látszik a lényeg. A Refresh(); hívás meg nem kell.
-
Orionk
senior tag
válasz
Peter Kiss #7974 üzenetére
Java-val foglalkoztam eddig és most áttérek melóhely váltás miatt C#-ra.
Ezt a könyvet, amit említettél a Nutshell-t hogyan lenne érdemes forgatni véleményetek szerint, hogy jól beépüljön minden az agyamba? Végigolvasni és közben kipróbálgatni, amiket ír benne? köszi
Kellemes karácsonyt mindannyitoknak!
-
joysefke
veterán
válasz
Peter Kiss #7974 üzenetére
In a nutshell : 1089 oldal
-
joysefke
veterán
C# 7.0 in a Nutshell könyvet referenciaként forgatja valaki? Vélemény?
-
#hpq
aktív tag
Sziasztok!
C# vizsgára való készülés során (Visual Studio)-ban szeretnék kirajzoltatni egy meghatározott ponttól pontig egy szakaszt amikor lenyomom a button billentyűt.
Az lenne a kérdésem, hogy mi a hiba mert nem jelenik meg? (Vizsgán nem lehet használni a paint eventet, csak pontokkal lehet kirajzoltatni.)Előre is nagyon köszönöm a segítségeteket!
Forráskód:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp6
{
public partial class Form1 : Form
{
public Color szín = Color.Red;
int x1 = 10; int y1 = 10; int x2 = 100; int y2 = 100;//függvényeim
public void Szakasz2(Bitmap bmp, int x1, int y1, int x2, int y2, Color szín)
{int hx = x2 - x1;
int hy = y2 - y1;
int h = Math.Max(Math.Abs(hx), Math.Abs(hy));
if (h == 0)
{
bmp.SetPixel(x1, y1, szín);
}
else
{
double lx = 1.0 * hx / h;
double ly = 1.0 * hy / h;
double x = x1; double y = y1; bmp.SetPixel((int)x, (int)y, szín);
for (int k = 1; k <= h; ++k)
{
x += lx; y += ly; bmp.SetPixel((int)x, (int)y, szín);
}
}
Refresh();
}//eseményeim
public Form1()
{
InitializeComponent();
}private void pictureBox1_Click(object sender, EventArgs e)
{
//Console.WriteLine("x1:{0},y1:{1},x2:{2},y2:{3}", x1, y1, x2, y2);
Szakasz2((Bitmap)pictureBox1.Image,x1,y1,x2,y2,szín);
}private void button1_Click(object sender, EventArgs e)
{}
private void Form1_Load(object sender, EventArgs e)
{ pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); }
}}
-
ASP MVC
Van egy Partner View-om, ez a View meghív két Action-t, egy Filter-t és egy List-et, mindkettő visszaad egy PartialView-t. Szépen meg is jelenik, ezzel nincs gond.
Azt szeretném elérni, hogy a Filter (Partial)View-on összerakott modelt valamilyen úton módon átadjam a List View-nak.
Odáig megvagyok, hogy a Filter-en a Form felpostol egy PartnerFilterViewModel -t, ezen rajta vannak a szűréshez szükséges propertyk.
[HttpPost]
public ActionResult Filter(PartnerFilterViewModel model)
{
...
}Miként oldható ez meg?
-
Keem1
veterán
Maga az alkalmazás. Most a Load-ban vannak ezek a cuccok, de míg nem ért véget, a form meg se jelenik. Tudom, nem sok idő, nem másodpercekről van szó, de akkor is szeretném, ha előbb bejönne a form (userünk tudja, hogy él a program), majd a db dolgok, és végül hozzá lehet látni a munkához.
Sima WinForms applikáció. -
amargo
addikt
Maga az alkalmazás indul el vagy egy form?
Amúgy a splash screen lehet erre megfelelő, ha már így indul az alkalmazás, hogy kell a db.Ha pedig egy másik form-on kell, akkor alkalmazás indulása után egy másik szálon már mehet is initialization a db-re. Így látatlanban ezt a két tippet adnám.Ha wpf-akkor onActivated is ott van pl.
-
Keem1
veterán
Srácok, hová érdemes inicializáló dolgokat tenni? Olyan metódus kéne, aminél már a form betöltődött, de felhasználói interakció még nem kivitelezhető.
Ha letörlöm az adatbázis fájlt, akkor van, hogy 300-600 ms ideig is elszöszöl, míg létrehozza az adatbázist, az alap táblákat, meg az amúgy is szokásos alapbeállítások alkalmazódnak. A beállítások betöltése majd érint(het)i a form elemeit is (pl. listbox feltöltése).Egyébként egész megbarátkoztam az SQLite-tal
Alapvető különbségek vannak MySQL-hez, meg úgy általában a non-local adatbázisokhoz képest. Pl. a tranzakciókezelés jó barátom lett sok adat egyidejű módosításakor. Pl. amikor teszteltem, volt hogy 1000 db random string beírása külön-külön 7 másodpercet vett igénybe, tranzakcióval meg 2-300ms.Ha jól sikerülnek most a dolgok, akkor a saját későbbi munkámat könnyíthetem meg azzal, hogy kevesebb feladathoz hívnak személyesen oda.
-
Orionk
senior tag
Hello,
Evosoftnál látom, hogy van olyan pozíció megnevezés, hogy C# developer Sizer.
Mit jelent a Sizer?
köszi -
j0k3r!
őstag
Szerintem neked egy Community 2017 jó lesz kezdésnek.
-
Orionk
senior tag
C#-ban Ti miben fejlesztetek? Visual Studio-ban? thx
-
martonx
veterán
Az megvan, hogy mi a különbség szerver oldal és kliens oldal között? Érted az egyik kód a szerveren fut, a másik a böngészőben
Azaz így direktben sehogy nem tudod megoldani, amit akarsz. Aztán persze miért ne küldhetnéd el a szervernek js-ből ajax-al azt, amit majd szeretnél, hogy a szerver belerendereljen a model propertybe. -
ASP MVC
Milyen megoldással tudok Razor viewban a Model egy propertyjéhez értéket rendelni Javascriptből?
-
martonx
veterán
Jobbra váltani mindig könnyű, azaz Java -> C# váltás laza. Igaziból a C# -> Java váltás se fáj annyira, de a Java sokkal butább szintaktikailag (minél jobban benne voltál a C#-ban annál jobban fáj, hogy mennyire fapados a Java).
Ami tényleg fájni tud, az a tipikus menedzselt nyelvek (C# - Java)-ról váltás bármi másra, vagy bármi másról ezekre. -
Peter Kiss
őstag
-
Keem1
veterán
válasz
Froclee #7950 üzenetére
Stopwatch-csal mértem, igen, belevettem a Console.WriteLine() kiíratást is. Amúgy gyanúsan lassú volt előtte, SQL-ben ugyan nem vagyok istenkirály, de tán pár év PHP+MySQL után amatőrnek se számítok, így nagyon elgondolkodtam. Már jó, 40 millisec alatt van 10 és 350 elemű kiírással együtt is.
-
Froclee
őstag
Hogyan mérted? Debugger attacholva van? Function előtt és után DateTime? (Stopwatch-al kell.) Egyébként a JIT-től is lehet szóval érdemes loopban futtatni kb 20szor.
-
Keem1
veterán
Lehet, én voltam a hülye
A második táblára rátettem egy PK-t, így 30 ms ugyanaz a lekérdezés.
Hiába, nem sikerült tökéletesen importálni MySQL-ből néhány táblát. Ezen még dolgoznom kell.Ettől függetlenül azért érdekes, hogy a DB Browsernek simán ötöde volt így is. Most 40-50 ms, az én appomban pedig 30-40 ms a lekérdezés.
A MySQL megmaradt 100 körül, de ott alapból megvolt a PK, az csak a MySQL->SQLite importkor mászott le. -
Keem1
veterán
Szerintetek mitől van az, hogy egy SQLite lekérés ugyanazzal a queryvel C# appban sokkal lassabb, mint egy adatbáziskezelőben (DB Browser for SQLite 3.10.1)?
Az SQL valami ilyesmi:
SELECT T1.field1, T2.field2, T3.field3 FROM table1 T1 LEFT JOIN table2 T2... WHERE ... LIMIT 10
DB Browser: 4 rows returned in 237ms
C# console app: Kész! 00:00:01.29
MySQL (phpMyAdmin, böngészőben): Sorok megjelenítése 0 - 3 (4 Összesen, A lekérés lefutott 0.1508 másodperc alatt)Azért az is durva, hogy a MySQL böngészőben, másik gépről kevesebb mint fele idő alatt lefutott (150 ms), mint az aprócska, és helyben lévő SQLite (237 ms). Kezdek kiábrándulni a helyben tárolt adatokhoz használandó SQLite-ból.
-
Szia! Én ugyan úgy junior JAVA-ról junior C#-ra váltottam, szerintem relatív "egyszerű", könnyebb mint fordítva vagy mint Cpp-re váltani.
Reiter könyv szerintem nem egy nagy durranás, Andrew Troelse - C# 2008 és a .NET 3.5 könyve sokkal-sokkal jobb. Nem kell feltétlen az egészet elolvasni, igen vaskos darab.
-
Orionk
senior tag
Sziasztok!
JAva-ban fejlesztettem eddig.
Első munkahelyemre most mégis junior C# fejlesztőnek vettek fel, mert az interjún a C# -nak a Java "megfelelőit" tudtam.Mit gondoltok egy ilyen váltásról?
Illetve ezt a könyvet jónak tartjátok arra, hogy kezdetben ebből zárkózzak fel?
köszi
-
joysefke
veterán
válasz
joysefke #7939 üzenetére
Ez float.Parse(string) helyett
bool float.TryParse(string, out float)
-tal van.A kettő között a különbség az, hogy a TryParse akkor sem dob exception-t ha nem sikerült a parzolás, ehelyett a sikert a TryParse(...) fgv. a visszatérési értékével jelzi. Csak akkor, ha ha mindkét számot egyszerre sikerült parzolni lesz a success változó értéke true, ekkor tudja a vezérlés elhagyni az adatbeolvasó do-while ciklust.
-
joysefke
veterán
using System;
class Program
{
static void Main(string[] args)
{
bool succes = false;
float num1 = 0;
float num2 = 0;
do
{
Console.WriteLine("Kérem az összeadni kívánt számokat.");
Console.Write("Egyik szám: ");
string a = Console.ReadLine();
Console.Write("Másik szám: ");
string b = Console.ReadLine();
succes = float.TryParse(a, out num1) && float.TryParse(b, out num2);
if (!succes)
{
Console.WriteLine("");
Console.WriteLine("Nem számot adtál meg!");
}
}
while (succes != true);
float osszeg = num1 + num2;
Console.CursorVisible = false;
Console.WriteLine("A két szám összege= " + osszeg);
}
} -
Pörp
senior tag
válasz
joysefke #7927 üzenetére
Megcsináltam, köszönöm a segítséget. A másik módszerrel hogy nézne ki?
Köszönöm mindenkinek!using System;
class Program
{
static void Main(string[] args)
{
bool succes = false;
float num1=0;
float num2=0;
do
{
Console.WriteLine("Kérem az összeadni kívánt számokat.");
Console.Write("Egyik szám: ");
string a = Console.ReadLine();
Console.Write("Másik szám: ");
string b = Console.ReadLine();
try
{
num1 = float.Parse(a);
num2 = float.Parse(b);
succes = true;
float osszeg = num1 + num2;
Console.CursorVisible = false;
Console.WriteLine("A két szám összege= " +osszeg);
}
catch (Exception ex)
{
Console.WriteLine("");
Console.WriteLine("Nem számot adtál meg!");
}
}
while (succes != true);
}
} -
Jester01
veterán
válasz
Froclee #7936 üzenetére
Még az is kiderülhet, hogy nem is olyan bad practice amíg az exception a kivételes esetre vonatkozik. Például a fentebb említett, "sok számot fájlból betöltök" az valószínűleg gyorsabb lesz az exception változatban, feltéve, hogy a számok jórészt helyes formátumban vannak. A normál végrehajtási irány ugyanis úgy lesz a leggyorsabb.
-
Froclee
őstag
válasz
joysefke #7933 üzenetére
tényleg jó a bad practice bemutatására.
(no offense)
kis olvasmány -
Peter Kiss
őstag
Egy apróságot hozzátennék, ha a kérdező a Convert class-t használta: Convert.ToInt32() returns 0 when argument is null.
Az, hogy mikor mennyire fáj egy exception, kérdezd meg a processzorod L2 cache-étől.
Nyilván ebben a példában hótmindegy, nem is ez a kérdés, de mondjuk egy trading alkalmazással ahol a latency hiphop átszámolódik komoly $$$-ká, ott már nem mindegy. -
joysefke
veterán
A válaszom tökéletesen helytálló illetve egyből működés közben mutatja be a dolgot, copy-pésztezhetően. ÉS mint följebb írtam vagy a fölötte levő hsz a TryParse(..) -val, vagy az int.Parse(..). Konzolon userre várva sosem fog számítani, ha pedig streamből jön az adat, akkor már nem az lesz a kérdés, hogy milyen metódussal lehet string->int parseolni.
-
-
joysefke
veterán
Az előző hsz, vagy ez, int.Parse(string)-gel, de itt manuálisan kell elkapni az exceptiont
a
bool success
változó tárolja, hogy sikeres volt-e a beolvasás, ado-while
ciklus addig fog próbálkozni a beolvasással, míg az egyszer sikeres nem lesz. A string -> int átalakítást azint.Parse(string)
végzi, ha ez sikeres volt (mert a user tényleg számot adott be), akkor a következő végrehajtott utasítás a success = true; lesz. Ellenkező esetben létrejön egy exception és a végrehajtás acatch(Exception) {...}
blokkban folytatódik anélkül, hogy a success változót átállítottuk volna, ebben az esetben a do-while ciklus újra lefut.class Program
{
static void Main(string[] args)
{
int num=0;
bool success = false;
do
{
Console.Write("Enter number : ");
string str = Console.ReadLine();
try
{
num = int.Parse(str);
success = true;
}
catch (Exception ex)
{
Console.WriteLine("Not a valid number, try again!");
}
} while (success != true);
Console.WriteLine($"You typed in the following number: {num}");
}
} -
Jester01
veterán
Int32.TryParse
vagy elkapod az exceptiont. -
Pörp
senior tag
Sziasztok!
Abszolút kezdő vagyok, a billentyűzetről várok egy leütött számot, egy int változóhoz.
Addig megvan, hogy int a = Convert.ToInt32(Console.ReadLine());
A gondom az, hogy ha nem számot, hanem betűt vagy stringet ütök be, akkor kifagy. Hogy lehet eldönteni, hogy a billentyűzetről beadott karakterek azok int vagy string? -
kobe24
tag
Sziasztok!
Remélem valaki tud segíteni a problémámon. Egy wpf-es alkalmazást készítek éppen, és van egy olyan része amikor vonalkódot kellene leolvasni és az alapján adatokat betölteni. Viszont a kérés az az, hogy ne kelljen mindig az input mezőbe belekattintani és úgy leolvasni a vonalkódot. Erre találtam egy megoldást a neten amit ezen a linken meg is tudtok nézni. Nagyon jól működik, ha a billentyűzeten ütök be bámifél adatot. Még egy androidos alkalmazást is letöltöttem ami elviekben a vonalkód olvasást szimulálja, és wifin keresztül küldi az adatot a gépnek. Viszont amikor már egy tényleges vonalkód olvasóval próbáltam akkor olyan billentyűleütéseket érzékelt az alkalmazás mint LeftAlt vagy a numpad1-9-ig. Ha rendesen egy jegyzettömbe vagy valamilyen input mezőbe szkenneltem az olvasóval akkor tényleg a vonalkód számát küldte el, úgyhogy nem az olvasóval van gond. Viszont nem igazán értem hogy az alkalmazásom miért vesz hibás adatokat. Esetleg ha a fenti dologra valakinek valami másfajta megoldása lenne azt is szívesen fogadnám. Köszönöm előre is a segítségeteket.
-
Gódor M.
újonc
Sziasztok! Azt hogyan lehet megoldani, hogy a vektor elemeihez adatokat is rendelek? Pl: A vektor (vagy mátrix) elemei városok, és mindegyikhez hozzárendelem az átlaghőmérsékletet, meg az évi csapadékmennyiséget.
A válaszokat előre is köszi!
-
"Szóval téged nem az érdekel, ha egy HttpPost-os action meghívódik, hanem az hogy kód szinten hány metódus van felannotálva (szép szó) a HttpPost attribútummal?"
Pontosan
Az Application_Start-ot nem akarom teleszemetelni, viszont van benne regisztrálva egy FilterProviderem, abban akarom kigyűjteni ezeket a httppost metódusokat.
Magáról a metódusról meg tudom állapítani, hogy van-e rajta httppost attributum, olyat már csináltam korábban:
bool hasHttpPostAttr = (actionDescriptor.GetCustomAttributes(typeof(HttpPostAttribute), true)).Any();
Köszi mindkettőtöknek, utána nézek a fentebbi linkeknek...
-
j0k3r!
őstag
Szóval téged nem az érdekel, ha egy HttpPost-os action meghívódik, hanem az hogy kód szinten hány metódus van felannotálva (szép szó) a HttpPost attribútummal? Ez esetben én reflection-t használnék az Application_Start-ban. Kezdve a web alkalmazásod(assembly) összes osztályával, ami a System.Web.Mvc.Controller-ből származik, majd ezek publikus nem statikus metódusain ilyesmit nézni.
mod: ha nagyon elakadsz vele, akkor délután megírom ezt a pár sort
-
j0k3r!
őstag
-
Sziasztok! ASP MVC alkalmazásomban van egy custom
IFilterProvider
implementációm. Szeretnék actor
-ban végigmenni az összes alkalmazásban fellelhetőAction
-on, hogy ki tudjam gyűjteni aHTTPPOST
attribútummal rendelkezőket.Nyilván az
IFIlterProvider
által biztosítottGetFilters(ControllerContext controller, ActionDescriptor action)
függvényen keresztül megy a dolog egyszerűen, de én az előtt szeretném ezt tudni, mielőtt ez a fv. meghívásra kerül. -
Goose-T
veterán
Miért nem deszerializálod streamből parseolás helyett? Ezerszer egyszerűbb és gyorsabb lenne, ráadásul memórialimit sem lenne. Csinálsz egy osztályt, feldekorálod XML attribútumokkal, oszt jóvan. Kiindulópontnak ez jó lehet.
-
Keem1
veterán
-
Keem1
veterán
válasz
Froclee #7906 üzenetére
Valóban érzékeny adat, így csináltam egy lecsupaszított verziót
Az alapötlet onnan származik, hogy az eddigi DOM parsert akarom átírni, mivel adott esetben több száz, vagy akár GB-on felüli XML is létezik, így a ram telítődés (és a swappolás) hátrányai rögtön jelentkeznek. Ez az előbb 26 másodperc alatt szaladt végig egy kicsit több, mint 1 GB-os példányon, csak épp működésre bírni nem tudom.Köszönöm a segítséged!
Basszus!
Szerintem rájöttem a hibára!travel_data[id].Add(xmlReader.Value);
HELYETT:travel_data[id].Add((XNode.ReadFrom(xmlReader) as XElement).Value);
Lassan kiderül, hogy én bizony csak egy kontár vagyok...
-
Froclee
őstag
-
Keem1
veterán
Srácok, mit rontok el?
KódA
Dictionary<string, List<string>> travel_data = new Dictionary<string, List<string>>();
id-ját (string) ki tudom íratni, de aList<string>
elemeit már nem.Egyébként létezik olyan univerzális dump, ami a paraméter változó, objektum, stb. adatait strukturáltan kiírja, mint pl. php-ban a
print_r()
? Ilyen esetben nagy segítség lenne, hogy ténylegesen mi van az adott változóban.Ez a kimenet (az adat résznél (belső foreach) üres sorok):
Nyomjunk egy billentyűt a kezdéshez!
Beolvasandó fájl: TOROKORSZAG39.xml
=== Kész! 00:00:01.11 ===
YS4257=====
TMLMB4259=====
ADWP4282=====
SLR4284=====
TBRH4293=====
-
-
joysefke
veterán
válasz
Peter Kiss #7900 üzenetére
Ha az nem is jó neked, akkor pl. én nem használnék Color-t, mert az kicsit túl nagy, helyette egy int is megteszi vagy egy kisebb saját típus.
Te jó ég, most megnéztem
Console.WriteLine(Marshal.SizeOf(new Color ())); -----> Ez 24-et ír ki a konzolra
Jól értelmezem, Color objektumonként 24 Byte + a tömb overheadje a memóriafoglalás???
Ez 13Mpx-nél (az egy átlagos kép) 13*24*E6 = 312MB+overhead...
Én meg annyira meg voltam győződve róla, hogy ez a Color objektum csak az RGBA értékeket tárolja 4byte-ban, és az a sok property amin keresztül ezt-azt le lehet kérdezni az is csak az RGBA értékeket kérdezgeti le/állítja be...
-
joysefke
veterán
Saját szórakozásra implementálok egy Seam Carving algoritmust. Az algoritmus meg körülötte egy WPF ablak már kész van, prototípus szinten szépen működik (egyelőre full fapad, de müxik).
Én is tegnap jöttem rá -világított rá valaki redditen-, hogy a Color az sokat foglal, mindjárt meg is nézem mennyit. Eddig szembe sem jutott, hogy a Color az nem 4 byte (8+8+8+8 = A+R+G+B).
A szükségesnél magasabb memóriafoglalás egyelőre nem zavar, egy 13mpx-es kép esetén az applikáció teljes memóriafogyasztás "csak" 500-550mb. A sebesség viszont sokkal gázabb. Parallel.For(), taskok és nem managelt mem hozzáférés segítségével már volt némi gyorsulás
Na mind majd visszajövök
Athlon64:
A kép kirajzolása másodlagos, kétszer kell kirajzolni: miután betöltötte a képet, illetve miután lefutott az algoritmus a módosított képet.Ha lesz időm töltök fel konkrét kódrészleteket, hogy lássuk mit lehetne hatékonyabbá tenni. Lenne mit
Ú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!
- AKCIÓ! Lenovo Thinkpad T14 Gen 3 üzleti notebook - i5 1245U 16GB RAM 512GB SSD Intel Iris XeW11
- 15,6" Dell Latitude laptopok: E6540, E5550, E5570, 5580, 5590, 5500, 5501, 5510/ SZÁMLA + GARANCIA
- BESZÁMÍTÁS! GIGABYTE AORUS MASTER RTX 3070 8GB GDDR6 videokártya garanciával hibátlan működéssel
- Honor Pad X8a 64GB Wifi,1 év Garancia
- TAVASZI BOMBA AKCIÓK! STEAM, UBISOFT CONNECT, EA APP, XBOX EREDETI KULCSOK 100% GARANCIA
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest