- Honor 200 - kétszázért pont jó lenne
- iPhone topik
- Samsung Galaxy S25 - végre van kicsi!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Milyen okostelefont vegyek?
- Mobil flották
- India felől közelít egy 7550 mAh-s Redmi
- Android alkalmazások - szoftver kibeszélő topik
- Profi EKG-s óra lett a Watch Fitből
- Honor 400 Pro - gép a képben
Új hozzászólás Aktív témák
-
ArchElf
addikt
Nem csak metróra lesz használható az új VS Express... [link]
AE
-
ArchElf
addikt
Igen. Gyakorlatilag annyit jelent, hogy a paramétereket nem az SQL hívás karakterláncába gyömöszölöd bele, hanem az SQL motor lefordítja a hívást már a paraméterek hozzáadása előtt, és az előkészített (lefordított) SQL hívás paramétereibe illeszti be az átadott paramétereket. Ez alapvetően két dolog miatt jó:
- A paraméter nem veszélyezteti meg a hívás integritását (nem tudja átalakítani a hívás szerkezetét)
- Az előkészített utasítás változó paraméterekkel többször (pl ciklusban) gyorsabban végrehajtható mint egyénileg összerakott (összefűzött string) utasításonként.AE
-
ArchElf
addikt
válasz
WonderCSabo #3308 üzenetére
Prepared statement
AE
-
ArchElf
addikt
válasz
Gülredy #3257 üzenetére
De az érthetőség kedvéért while ciklussal is berakom
static string RandomizeWhile(string text)
{
Random rnd = new Random();
StringBuilder sbIn = new StringBuilder(text);
StringBuilder sbOut = new StringBuilder();
while(sbIn.Length > 0)
{
int rNumber = rnd.Next(sbIn.Length);
sbOut.Append(sbIn[rNumber]);
sbIn.Remove(rNumber, 1);
}
return sbOut.ToString();
}Amúgy ez lassabb megoldás (mivel az sbIn.Length értékét minden ciklusban kétszer is ki kell értékelni).
AE
-
ArchElf
addikt
válasz
Gülredy #3255 üzenetére
static string Randomize(string text)
{
Random rnd = new Random();
StringBuilder sbIn = new StringBuilder(text);
StringBuilder sbOut = new StringBuilder();
for (int ix = text.Length; ix > 0 ; ix--)
{
int rNumber = rnd.Next(ix);
sbOut.Append(sbIn[rNumber]);
sbIn.Remove(rNumber, 1);
}
return sbOut.ToString();
}AE
-
ArchElf
addikt
Tárold el az eredeti sorrendet valahol (pl a Tag property-ben) és rendezz aszerint. A ListBox-nak nincs "eredeti" sorrendje, mindig csak az aktuális van.
A Sorted property amúgy arra jó, hogy nem csak sorbarakja a listát, de az ]j elemeket is sorreendbe rakva adja hozzá.AE
-
ArchElf
addikt
válasz
Des1gnR #3179 üzenetére
Ötletek:
1. Használj ""-t filterezésre, lehet, hogy a "*" csak a kiterjesztés nélküli fájlokat figyeli.
To watch for changes in all files, set the Filter property to an empty string ("") or use wildcards ("*.*"). To watch a specific file, set the Filter property to the file name. For example, to watch for changes in the file MyDoc.txt, set the Filter property to "MyDoc.txt". You can also watch for changes in a certain type of file. For example, to watch for changes in text files, set the Filter property to "*.txt".
2. lehet, hogy explicit Security Permission kell a metódusnak:
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]3. WaitForChanged
This method waits indefinitely until the first change occurs and then returns. This is the same as using WaitForChanged with the timeout parameter set to -1.
Egyrészt ez a metódus addig vár, amíg nincs változás (tehát a program "megáll, amíg nem történik valami). Másrészt amikor visszatér az első változással, akkor tovább fut a program (te viszont nem is nézed, mi a változás). Azután beállítod a figyelést és a események generálását, de mivel nincs, ami "visszatartaná" (loop vagy readkey, vagy akármi), így a programot ezzel ki is lép...AE
-
ArchElf
addikt
Sudoku solvert dobtam össze - tudom nem nagy cucc, de legalább átlinkelem a történetet - háthamégis lefikázza valaki
AE
-
ArchElf
addikt
válasz
petersonal #3044 üzenetére
ugye C# alatt?
public Bitmap ResizeBitmap( Bitmap b, int nWidth, int nHeight )
{
Bitmap result = new Bitmap( nWidth, nHeight );
using( Graphics g = Graphics.FromImage( (Image) result ) )
g.DrawImage( b, 0, 0, nWidth, nHeight );
return result;
}AE
-
ArchElf
addikt
MOBILNET SUX
AE
-
ArchElf
addikt
AE
-
-
-
ArchElf
addikt
válasz
Neil Watts #2954 üzenetére
Be van csatolva a metódus (btnLetoltes_Click) a Click eseményre?
Debugban belelép - ha nem lép bele, akkor valamit elcsesztél az esemény létrehozásásnál (btw itt nem elég létrehozni a "megfelelő" nevű metódust, mint régen a VB-ben, itt össze kell linkelni az eseményeket és az eljárásokat - többek között ezt is az InitializeComponent() eljárásban teszi meg a program, ha jól kattintgattad össze).AE
-
ArchElf
addikt
válasz
Jhonny06 #2947 üzenetére
1) Ne felületen add hozzá az eseménykezelőt, hanem kódból (illetve felületen is hozzá tudod adni a properties ablakban az Event fülön a megflelő sorban ki tudod választani a megfelelő karakterisztikával rendelkező metódusok közül - vagy kézzel beírva új FV nevet a VS létrehozza a megfelelő nevű fv-t).
2) Ne konkét típusra (Button, PictureBox) cast-old a sendert, hanem valami közös ősre: Control. Valószínűleg ennek megvan az a tulajdonsága, amit változtatni szeretnél (Text, Background, Image), illetve az is amit lekérdezel (Name, Tag)...
private void Form1_Load(object sender, EventArgs e)
{
button1.Click +=new EventHandler(OnClickHandler);
pictureBox1.Click +=new EventHandler(OnClickHandler);
}
public void OnClickHandler(object sender, EventArgs e)
{
Control s = sender as Control;
if (s == null) throw new ApplicationException();
//kód
s.BackgroundImage = s.Tag as Image;
}AE
-
ArchElf
addikt
válasz
atti1848 #2907 üzenetére
Ha ezt egy kicssit továbbfejleszted úgy hogy a képek nem látszanak alapból és a buttonok helyett checkboxot használsz button formában gyakorlatilag memóriajátékot csinálsz - szerintem ez már elég lehet a kettesért. De ha már ötletek - tag mezőbe ne magát a képet rakd be, hanem csinálj egy List<Image> - et, amiből csak az indexet teszed bele a Tag-be. Jobban is néz ki, és szerintem jobban is értékeli a tanerő.
Tipp: esemény kezelésnél ne buttononként generálj kezelő eseményt, hanem csak egyet csinálj, ami az összes button eseményét lekezeli. Bár jobban belegondolva szerintem már neked is eszedbe jutott, amikor kipattant az ötlet
AE
-
ArchElf
addikt
válasz
norbitális #2875 üzenetére
Ja értem... nem ártott volna a kódot is nézni
a
b c
d e f
g h i j
k l m n o
p q r s t u
v w x y z 0 1minek kellene ebből lennie...?
a b d g k p v
c e h l q w
f i m r x
j n s y
o t z
u 0
1
ez?AE
-
ArchElf
addikt
válasz
norbitális #2875 üzenetére
Egy véletlen számú elemből álló sorokból álló fix számú tömböt hogy transzponálsz?
ebből
x x x x
x x
x x x
x
x x
x x x x x
x x xez lenne
x x x x x x x
x x x x x x
x x x x
x x
xAE
-
ArchElf
addikt
válasz
James Bond #2843 üzenetére
string[] sl = s.Split('\t');
Amúgy mi ez a sok 5000 elemű tömb? Te is használj List<int>-et helyette (vagy struct-ot, Dataset-et, a struktúrált adatokkal dolgozol)...
ehh, elmentem időközben teát csinálni
AE
-
ArchElf
addikt
válasz
Neil Watts #2836 üzenetére
Nem félreérthető volt, hanem rossz.
A te megoldásodban minden páros számra kiírta a textboxba (felülirva az előző szöveget), hogy az adott szám páros.1. private void buttonOKrb_Click(object sender, EventArgs e)
2. {
3. if (radioButtonParatlan.Checked)
4. {
5. for (int i = 0; i < veletlentar.Length; i++)
6. {
7. if (veletlentar[i] % 2 == 0)
8. {
9. labelParatlParos.Text = veletlentar[i] + " db páratlan számot sorsolt ki a program";
10. }
11. }
12. }
13. listBox_eredmenyKi.Items.Clear();
14. }Ha kellene egy kis manuális debug:
3. radioButtonParatlan.Checked -> feltételezhetjük, hogy páratlan számokíat keresel
7. if (veletlentar % 2 == 0) -> itt viszont a párosakra ugrik be az if ágra (kettövel osztva nincs eredmény az páros. Ami neked kellett volna az a != 0.
9.c labelParatlParos.Text = veletlentar(i) + " db páratlan számot sorsolt ki a program"; -> itt az aktuális elemé értékét írja ki - még csak nem is a sorszámát, vagy a számosságot (ezt javította Athlon64+).+1 nem értem a fixációt a tömbökkel; rendes gyűjteményekkel (Collection), sokkal könnyebben/értelmesebben lehet dolgozni, mert flexibilisek és egy csomó már előre elkészített funkciót is biztosít.
AE
-
ArchElf
addikt
Így működik:
string kosar= "Termékekek: ";
int valasztas;
string rl;
while((rl = Console.ReadLine())!="")
{
if (!inint.TryParse(rl, out valasztas)) continue;
switch (valasztas)
{
case 1: kosar += "Egér, ";
break;
case 2: kosar += "Hangfal, ";
break;
case 3: kosar += "Billentyűzet, ";
break;
case 4: kosar += "Monitor, ";
break;
case else:
break;
}
}Az előző azért nem működik, mert a string kosar= "Termékekek: "; mindig újra inicializálja a kosar változót. Amúgy mivel a kód többi része nem is látható, nem is tudom elképzelni, hogy volt többször lefuttatható a switch rész.
AE
-
ArchElf
addikt
Persze, mert a fordító figyel arra, hogy mindenféleképp kapjon értéket.
Ugyanezért nem jó a következő funkció sem
int RosszFunkcio(bool b)
{
int n;
if (b)
{
n = 10;
}
return n;
}
Mivel az if mindkét ága nincs kidolgozva (else ág), így elképzelhető, hogy az n nem kap értéket (mert a függvényt false értékkel hívtuk meg).
Ezért sír a fordító, hogy:
Error 1 Use of unassigned local variable 'n'AE
-
ArchElf
addikt
static void Main(string[] args)
{
int? n;
try
{
//n = 10;
n = int.Parse(Console.ReadLine());
}
catch
{
n = null;
// valami
}
if (n == null)
Console.WriteLine("Valami hiba történt.");
else
Console.WriteLine(n);
}int? -> nullable integer (olyan int, ami nem csak szám-értéket, de null-t is felvehet)
AE
-
ArchElf
addikt
Hogy ne adhatnál neki, épp ez a lényege a try-nak. pl:
FileStream fileStream = null;
try
{
fileStream = new FileStream(@"c:\file.txt", FileMode.Open);
// Fálj olvasása
}
catch (IOExceprion ioex)
{
// IO hiba feldolgozása (pl file nem létezik, nem megnyitható, stb)
}
catch (Exceprion ex)
{
// Egyéb hiba feldolgozása (akármi más hiba)
}
finally
{
if (fileStream != null)
fileStream.Close();
}AE
-
ArchElf
addikt
Ha a try-on kívül deklarálod de értéket nem adsz neki, akkor a try-catch-finally-ban mindenféleképp (a finally-ban) értéket kell kapjon, hogy ne dobjon fordítási hibát.
Osztály típusúaknál érdemes legalább null-al deklarálni:
Object o = null;
érték típusúaknál meg valami érékkel (ami neked biztos nem jó):
int i = -1;AE
-
ArchElf
addikt
válasz
Neil Watts #2778 üzenetére
A for ciklusba ne a tömb hosszáig iterálj, hanem csak a db-ig. Utána nincs semmi a tömbben, azért kapod a hibaüzenetet. Amúgy tényleg tilos List<string>-et használi (vagy sima List-et, ami még a .NET 1.0-ban is volt)???
AE
-
-
ArchElf
addikt
válasz
Neil Watts #2765 üzenetére
if (KezdoVektor == nevBe[db][0])
helyett
if (KezdoVektor == nevBe[i][0])
nem?AE
-
ArchElf
addikt
válasz
kingabo #2710 üzenetére
Kerülő megoldásnak ott van a statikus osztály (nem kell inicializálni) és az extension methods (statikus osztályokban levő metódusok hozzáadhatók már meglevő osztályokhoz).
AE
-
ArchElf
addikt
válasz
WonderCSabo #2706 üzenetére
Mármint úgy értettem (mármint azon csodálkoztam), hogy lehet c#-ban osztályon kívüli függvényt csinálni?
AE
-
ArchElf
addikt
válasz
Dr. Student #2681 üzenetére
de maradhat így is, csak ne nullára vizsgáld, hanem float.NaN-re... [link]
A while ciklus az elején is egyszerűsíthető, másrészt a hibákat célszerű az error stream-re írni a sima output stream helyett:
float a;
Console.Write("Kérem az (a) szám értékét: ");
while ((a = int.Parse(Console.ReadLine())) == 0)
{
Console.Error.WriteLine("Az (a) értéke nem lehet 0.");
Console.Write("Kérem az (a) szám értékét: ");
}Harmadrészt célszerű volna lekezelni az az esetet is, ha az int.Parse hibára fut (nem szám lett beadva):
int a;
Console.Write("Kérem az (a) szám értékét: ");
while (!int.TryParse(Console.ReadLine(), out a) || a == 0)
{
Console.Error.WriteLine("Az (a) értéke nem lehet 0.");
Console.Write("Kérem az (a) szám értékét: ");
}AE
-
ArchElf
addikt
Használj [M]HttpWebRequest[/M]-et, és annak van Proxy tulajdonsága, amit kézzel tudsz konfigurálni.
AE
-
ArchElf
addikt
válasz
Dr. Student #2662 üzenetére
Dobd be ide a kódod és megmondjuk, mi a gebasz.
AE
-
ArchElf
addikt
válasz
Dr. Student #2663 üzenetére
Használd a keresőt
AE
-
ArchElf
addikt
válasz
Blake1757 #2632 üzenetére
Próbáld meg, hogy a mezőneveket berakod szögletes zárójelek közé: [mezőnév].
Amúgy az adatbáziskapcsolatot egyáltalán felépíti az ASP?
AccessDataSource1 inicializálva van egyáltalán?
Nem az IF-ben hal meg? Biztos nem írtál el valamit az elején a változónevekben?
Ha beállítod a breaket az If-re mindegyik változónak van értéke?AE
-
ArchElf
addikt
válasz
Jhonny06 #2606 üzenetére
És tömb helyett használ List<T>-et, nem kell annyit mókolni vele.
class Adatbazis
{
List<Hallgato> hallgatok = new List<Hallgato>();
public Adatbazis()
{
Random randAdatbazis = new Random();
int tombHossz = randAdatbazis.Next(20, 30);
for (int i = 0; i < tombHossz; i++)
hallgatok.Add(new Hallgato());
}
}AE
-
ArchElf
addikt
válasz
Gülredy #2593 üzenetére
static bool helyiertek(int vizsgalt_szam, int helyiertek_szama)
{
int helyiertek_erteke = (1 << helyiertek_szama);
return (vizsgalt_szam & helyiertek_erteke) == helyiertek_erteke;
}A helyiérték 0-tól kezdődik (tehát az az első).
A << operátor balra tolja a számot (2^n szorzásnak felel meg).AE
-
ArchElf
addikt
Még 10 évvel ezelőtt - VB6+C-ben volt ilyen tapasztalatom (igazából csak bedolgoztam, de a konkrét kamerakezelést nem én csináltam).
Első google keresés Google első oldal is sok találatot dobott (gondolom a VB
ET C#-ra alakítása nem túl nagy feladat):
http://63.236.73.220/showthread.php?t=378126
http://channel9.msdn.com/coding4fun/articles/Look-at-me-Windows-Image-Acquisition
Ezek képfeldolgozással manipulálnak (WIA - Windows Image Aquisition), video stream processinggel én nem próbálkoznék (amúgy az is képfeldolgozás, csak nem egyenként kért képekből, hanem video stream-ből.+5 perc kereséssel,
http://www.codeproject.com/KB/miscctrl/webcam_c_sharp.aspx
http://www.codeproject.com/KB/directx/DirXVidStrm.aspx
éspont ami neked kell: http://touchless.codeplex.com/AE
-
ArchElf
addikt
parse: én nem adok neki olyan bemenetet, ami problémát jelentene
Ilyeneknek soha nem szabad berögzülniük...Mintha autót építnél úgy, hogy nincs rögzítve a tengelyen a kerék, mert úgysem rögös a út...
Kis segítség:
Pozitív számokat adsz össze - tehát a számok összege folyamatosan nő. A számokat nem kell egyesével nyilvántartanod. A faktoriális összege is folyamatosan nö.
-> megjegyzed, hogy hoé tartasz a faktoriálisban, és ha az összeged nagyobb, mint az utolsó faktoriális összeg, akkorgyomorbólkb így:long összeg = 0;
long fakt_alap = 1;
long fakt_összeg = 1;
do
{
'... beolvasás
if (összeg == fakt_összeg)
{
Console.WriteLine(Az összeg [{0}] faktoriális, az alapja [{1}]", összeg, fakt_alap);
}
else if (összeg > fakt_összeg)
{
fakt_alap++;
fakt_összeg *= fakt_alap;
}
while (...);AE
-
ArchElf
addikt
Na ezt már érdemes optimalizáltan csinálni
Kell hozzá egy kis mögöttes logika - kb mindent ki lehet használni, azok közül, amit jester az én példáimban javítandónak talált:
- nem kell feleslegesen - minden bekérés után - számolgatni (összeg, faktoriális), figyelmi kell a különbségeket, és csak akkor számolni, ha szükséges
- hibakezelést, rendesen megoldani
- ja, és ugye írtuk, hogy vagy tryparse, vagy kivételkezelés... hmm?A két for ciklust nem igazán értem...
AE
-
ArchElf
addikt
válasz
Jester01 #2431 üzenetére
NP
Egyébként a példákat inkább csak az azonos megvalósítás kedvéért hoztam.
A példáim inkább egyszerű szemléltető kódocskák voltak, mint valós problémára írt csontra optimalizált kódok. Abban mondjuk egzet;rtek, hogy a tanulók inkább tanuljanak egy kicsit (nem is kicsit) optimalizálni, és problémamentes kódot írni.De had engedtessék meg nekem, hogy magyarázkodjam kicsit:
Természetesen plusz egy változóval sokkal hatékonyabban (nagy tömbelemszám esetén) megoldható a probléma, de ebben az esetben... Lássuk be, hogy három értékadás kb ugyanannyi erőforrást igényel, mint két értékadás plusz egy modulus osztás (ráadásul memóriában kevesebb is).
List / Sum (Linq) egyértelműen pazarlás erre a célra, ezekben az esetekben csak azt szerettem volna bemutatni, hogy nem csak a tömb létezik a .NET struktúrában, és List-tel lehet hasonló dolgokat csinálni (ráadásul úgy, hogy munka oroszlánrészét megcsinálja helyettünk a környezet).
Mondjuk a MOD-ot nem igazán értem. Az összeget mindig újra kell számolni, hiszen, ha mást nem a régi tagot ki kell vonni, az újat pedig hozzá kell adni, három tömbelem esetén ez sem biztos, hogy előnyösebb.Emellett feltételeztem, hogy a kolléga nem nagyon konyít a kivételkezeléshez (bocsánat a feltételezésért), viszont olyan kódot nem szeretek írni, ahol a kivételek nincsenek minimálisan sem lekezelve. A kivételkezelést pedig nem itt gondoltam bemutatni...
Feltételeztem azt is, hogy esetleg már valami offiszos tapasztalata (excel), ahol az =Int("szöveg") nullát ad vissza, ezért az általam írt kód is ezt a sémát követi. Természetesen megoldható volna az is, hogy a temp = 0; helyett egy Console.Error.WriteLine-al hibaüzenetet dobjon + continue segítségével újra bekérjen adatot a kód (mondjuk úgy rémlik, hogy a kivételkezelés módja nem volt lespecifikálva).
Végül (még egyszer?): nem egy általános megoldást akartam adni (ami kód mennyiségben valószínűleg több is, ráadásul egy kezdő számára sokkal nehezebben felfogható egészben, mint rész-példák összegeként).
Ja, és egyáltalán nem sértődtem, és köszönöm az építő kritikát.
AE
-
ArchElf
addikt
A List, csak csinál egy listát a három elemű tömbből (és a tömböt utána el is dobja, úgy ahogy van). Alapból a lista nem korlátos gyűjetmény (Collection), így bármennyi elem hozzáadható, ha a méretét nem korlátozzuk le fixre.
Parse azért rosszabb, mint a TryParse, mert ha nem tud konvertálni (pl szám helyett szöveget adtál be), akkor dob egy FormatException-t, és azt le kell kezelni, hogy ne szálljon el a program.
AE
-
ArchElf
addikt
Három megoldás, ami nem korlátoz... Ja és Parse helyett TryParse-t érdemes használni...
static void Tömb1()
{
int[] tomb = new int[] { 0, 0, 0 };
do
{
int temp;
if (!int.TryParse(Console.ReadLine(), out temp))
temp = 0;
tomb[2] = tomb[1];
tomb[1] = tomb[0];
tomb[0] = temp;
} while (tomb[0] + tomb[1] + tomb[2] != 8);
Console.WriteLine(" Az utolsó 3 elem összege 8 ");
}
static void Tömb2()
{
List<int> tomb = new List<int>(new int[] { 0, 0, 0 });
int sum;
do
{
int temp;
if (!int.TryParse(Console.ReadLine(), out temp))
temp = 0;
tomb.Add(temp);
tomb.RemoveAt(0);
sum = 0;
foreach (int val in tomb)
sum += val;
} while (sum != 8);
Console.WriteLine(" Az utolsó 3 elem összege 8 ");
}
static void TömbLinq()
{
List<int> tomb = new List<int>(new int[] { 0, 0, 0 });
do
{
int temp;
if (!int.TryParse(Console.ReadLine(), out temp))
temp = 0;
tomb.Add(temp);
tomb.RemoveAt(0);
} while (tomb.Sum() != 8);
Console.WriteLine(" Az utolsó 3 elem összege 8 ");
}AE
-
ArchElf
addikt
válasz
martonx #2405 üzenetére
Csak azt nem értem, hogy miért, nem lehet ezen változtatni?
Csak azért, mert aki érti is amit csinál (és amit a piac követel), az képes megélni a piacról és nem kell beérnie azzal a pár fillérrel, amit az iskola (állam) a tanároknak ki tud fizetni. Nincs nagy ördöngősség.
Ja és aki igazi szaki, az álaltában nem jó tanár, mert nincs türelme a tanulni nem akaró (és így a témához ostoba) diákokhoz.AE
-
ArchElf
addikt
-
ArchElf
addikt
Publish-nál a publikálással kapcsolatos folyamatok is lefutnak.
A Publish lefordítja az összes projektet (a build csak azokat, ami megváltozott az utolsó fordítás óta), valamint gyárt egy OneClick csomagot is a projektedből. Ha nincs megfelelő certificate-ed, akkor a OneClick csomag használata mindig sírni fog a CA hiba miatt.
Telepítőt lehet gyártani sima build-del is, csak hozzá kell adni a solution-höz egy installer projektet is. Webes projekt esetén a publish ki is rakja a webalkalmazást a célhelyre (ha be van rendesen konfigurálva).
+ Biztos vannak még olyan részletek, ami most hirtelen nem jutott az eszembe.AE
-
ArchElf
addikt
GraphicsPath.IsVisible GraphicsPath objektummal tudsz definiálni zárt területeket, az IsVisible üggvénnyel tudod ellenőrizni, hogy az adott pont belül van-e. Ezzel nem csak sima kör céltáblát tudsz szimulálni, hanem teljes alakos céltáblát is, amiben akár több kör céltábla is lehet...
AE
-
ArchElf
addikt
válasz
[pod]Diablo #2160 üzenetére
4 féleképp:
- definiálod, mint public static a main-ben, így arra tuddsz hivatkozni mindegyik formról
- definiálod, mint public static az egyik formon, így a másikról is látható lesz (pl Form1.valtozo)
- csak public-ként definiálod valahol (pl Form1-en), ilyenkor a szülő objektum hivatkozása is kell (pl Form2-t a Form1-ről nyitod meg, akkor inicializáláskor átadod neki a saját hivatkozását)
- csinálsz egy külön osztályt a közös változóknak és példányosítás után átadod az objektumot mindkét megnyitott form-nak.Szvsz a fenti megoldások "szépség" szerint növekvő sorrenben vannak
AE
-
ArchElf
addikt
BTW gyors csekkolással a google első találati oldalán három megoldást is találtam.
AE
-
ArchElf
addikt
válasz
Dufresne #1868 üzenetére
Talán itt: Azonnali kérdések órája 2
AE
-
ArchElf
addikt
válasz
[pod]Diablo #1823 üzenetére
string szoveg = "Tetszőleges szöveg";
char betu = szoveg[0];
Console.WriteLine(betu);Ki lehet próbálni.
AE
-
ArchElf
addikt
A comboBox1-2-3-nak megfelelő string tömböket létre kell hozni:
//színre
string[] szoveg1 = new string[12]{"";"";"";"";"";"";"";"";"idióta";"";"";""};
//hónapra
string[] szoveg2 = new string[12]{"korán";"";"";"";"";"";"";"";"";"";"";""};
//napra
string[] szoveg3 = new string[12]{"";"";"";"";"";"";"";"";"";"";"";"";"";"";"kelő";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""};A többit kedv szerint feltöltöd
A gombnyomásra meg behelyettesíted azt, amit már korábban megírtam...AE
-
ArchElf
addikt
Kell neked három tömb (vagy három lista):
string[] honapszoveg = new string[12] { };
string[] napszoveg = new string[31] { };
string[] szinszoveg = new string[16] { };Feltöltöd őket megfelelő elemekkel (inicializáláskor (a kapcsos zárójel között), vagy később.
Végül a három legördülő menü állapota alapján összefűzöd a stringeket:
if (comboBox1.SelectedIndex !=-1 ||
comboBox2.SelectedIndex !=-1 ||
comboBox3.SelectedIndex !=-1)
textBox1.Text = honapszoveg[comboBox1.SelectedIndex] + napszoveg[comboBox2.SelectedIndex] + szinszoveg[comboBox3.SelectedIndex];AE
-
ArchElf
addikt
válasz
[pod]Diablo #1819 üzenetére
Egy szövegben (string) a karakterek minden esetben benne vannak egy tömbben (char[]). A string egyes karakter elemeire tudsz úgy hivatkozni, hogy indexálod a változót:
char betu = szoveg[index];AE
-
ArchElf
addikt
válasz
SebajTobias #1761 üzenetére
Ezt találtam:
http://www.litwindow.com/Knowhow/HowTo/howto_create_secure_access_dat.html
Ugyan c++-ra készült, de egy kis utánajárással megvalósítható c# alatt is szerintem.Összekapcsolásra: kellenek Access-en létrehozott userek, amivel a felhasználók belépnek (Access azonosítja majd őket). A felhasználó egy login képernyőn megadja az azonosítót és a jelszót, a webalkalmazás pedig megpróbál JET-en keresztül kapcsolódni az access adatbázishoz az adatbázishoz tartozó mdw-n keresztül. Ha a felhasználók számára az mdw nem elérhető, akkor nem fogják tunk megnyitni az mdb-t sem (bár ha web-es progi, akkor az mdb-t sem fgják úgysem elérni...)
AE
-
ArchElf
addikt
válasz
FehérHolló #1737 üzenetére
Console.ReadKey(false) is elég - mondjuk akkor nem árt utána egy Console.WriteLine(), hogy ne csússzon össze a szöveg a beírt betűvel.
Persze, ha enterrel szeretné bevinni a karaktert, akkor kell a ReadLine()Amúgy befejezéshez is elég egy Console.ReadKey(true) - és akkor tényleg bármilyen gomb lenyomására vár, nem csak egy enterrel tud kilépni.
AE
-
ArchElf
addikt
válasz
Vasinger! #1730 üzenetére
Kicsit finomítva:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Betűtalálgatós
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gondoltam egy betűre az angol ABC-ből, találd ki!");
char a;
char b;
Random rnd = new Random();
a = (char)(rnd.Next('z'-'a') + 'a');
do
{
b = Console.ReadKey(true).KeyChar;
if (a < b)
{
Console.WriteLine("A betű előrébb van az ABC-ben");
}
else if (a > b)
{
Console.WriteLine("A betű hátrább van az ABC-ben");
}
else //if (a == b)
{
Console.WriteLine("Talált!");
break;
}
}
Console.ReadLine();
}
}
}Randomban char műveleteket használtam, hogy "látszon", mi történik.
Read helyett használj ReadChar-t, az vár egy lenyomásra, a Read-egész mást csinál (emiatt volt három "válaszod").
nem kell int-té alakítani, char is összehasonlítható
sima if-ek helyett, használj if - else if - else if - ... - else logikát.
logika helyett elég egy break.AE
-
ArchElf
addikt
válasz
szabodani #1731 üzenetére
Mármint az azonos számokat számolod össze az első tömbből?
Az első "tömb": List<int> számok
A második tömb: Dictionary<int, int> számok_száma
List<int> számok = new List<int>();
Dictionary<int, int> számok_száma
/*
számok feltöltése jön ide
*/
foreach(int szám in számok)
{
if (számok_száma.ContainsKey(szám))
számok_száma[szám].Value += 1;
else
számok_száma.Add(szám, 1);
}AE
-
ArchElf
addikt
Látom, hogy Windows Service esetében van valami webszervizes lehetőség...
Properies > Services > Enable Client Application Services
Van valakinek erről anyaga, esetleg megosztható tapasztalata?De ahogy nézem ez akár egész más is lehet, mint amit én szeretnék. A lényeg, hogy kellene egy szervíz, ami RPC/XMLRPC vagy valami hasonló módon "távolról" (kliensből) vezérelhető. Az az igazság, hogy nincs kedvem egy egész TCP Listener osztályt legyártani, szívesebben használnék valami beépített lehetőséget, amit a C# / IDE alapból is támogat.
AE
-
ArchElf
addikt
válasz
Neil Watts #1694 üzenetére
A C# erosen tipusos nyelv, igy a kozvetlen konverzio nem mukodik. Amennyiben a valtozo tartalma konvertalhato, ugy azt konverter segitsegevel (idegen tipusok, pl. String es int kozott), vagy kozvetlenul int->float/double eseten.
AE
-
ArchElf
addikt
Van egy csomó fejlesztői portál, ahol "nagyobb" munkákat is bemutatnak.
C-SharpCorner, CodeProject, hogy csak az első kettőt említsem, ami eszembe jut...AE
-
ArchElf
addikt
Szerintem te kevered a torpedót az aknakeresővel...
Az aknakeresőben kell kiírni, ha van mellette akna, a torpedóban azt kell kijelezni, ha eltaláltál valamit: Mondjuk van egy 10x10-es táblád, ami alapból kék (10x10 gomb, legegyszerűbben), és ha jóra kattintasz (ami mögött van hajó), akkor bepirosodik (eltaláltad), ha pedig nem, akkor beszürkül...AE
-
ArchElf
addikt
Webalkalmazás (alkalmazász szintű) logolásához kellene...
Ránézek erre a trace-es dologra.Úgy tűnik, ez nem annyira bejövős...
You must enable tracing or debugging to use a trace listener. The following syntax is compiler specific. If you use compilers other than C# or Visual Basic, refer to the documentation for your compiler.
To enable debugging in C#, add the /d:DEBUG flag to the compiler command line when you compile your code, or you can add #define DEBUG to the top of your file. In Visual Basic, add the /d:DEBUG=True flag to the compiler command line.
To enable tracing in C#, add the /d:TRACE flag to the compiler command line when you compile your code, or add #define TRACE to the top of your file. In Visual Basic, add the /d:TRACE=True flag to the compiler command line.AE
-
ArchElf
addikt
Anélkül, hogy megnézném, mit csináltál eddig az alábbiakat jó volna tudni:
Fejlesztői környezet (bár tudom, hogy a projektből is rá tudnék jönni - meg is néztem VS2010, amit még lusta voltam itthon felrakni...)
Megcélzott Framework (.Net 2.0, 3.5, 4.0?)
Hogy képzeled el a probléma megoldását (szavakban/képekben).Szóval "csak úgy" nagyon nehéz nekiállni bármit is csinálni. Ha nincs egy terv a fejedben (vagy papíron), akkor nagy valószínűséggel csak egy kusza romhalmaz lesz a vége. Szóval szeretném(-nénk) tudni, hogy mit gondolsz a problémáról és hogy hogyan kezdenél hozzá (elméletben) a leküzdéséhez. Ha ez megvan, már könnyen tudunk segíteni a programozási nehézségek megoldásában.
AE
-
ArchElf
addikt
Van valakinek tapasztalata log framework használatában (pl. log4net).
IIS-hez fájlba logoláshoz mintakódot (és konfig fájlt) szívesen látnék.AE
-
ArchElf
addikt
Amúgy célszerű, ha nem a "MySqlCommand username_keres = new MySqlCommand();"-ot hasznlod, hanem az alábbit (hibakezelés nélkül):
MySqlConnection con = new MySqlConnection();
con.Open();
MySqlCommand username_keres = con.CreateCommand();De még jobb a using-ot használni:
MySqlConnection con = new MySqlConnection();
con.Open();
//...
bool user_letezik;
using(MySqlCommand username_keres = con.CreateCommand())
{
user_keres.CommandText = "SELECT id FROM account WHERE username=?UN";
user_keres.Parameters.Add(new MySqlParameter("UN", user);
user_keres.Prepare();
object ret = user_keres.ExecuteScalar();
if (ret is DbNull)
user_letezik = False;
else
user_letezik = True;
}A connect-et elég egyszer inicializálni a futtatás során, és bármikor lehet vele command-ot "gyártani".
AE
-
ArchElf
addikt
Mondjuk itt pont nem törölsz, hanem kiválasztod a nem törlendőket...
Amúgy én utoljára többszálú hálózati szkennelő cuccot csináltam és egy listában voltak a background thread-ek. Abból kellett szinkronizálva törölgetni a megállt threadeket, hogy újakat lehessen a listába beemelni. Mondjuk az még VS.NET 2K5-ben készült XP alá (.NET 2.0) és nem voltak benne ilyen LINQ-es szépségek.
Utólag látom, hogy hülyén csináltam, mert még csak szinkronizálni sem kellett volna...AE
Ú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!
- Új Apple iPhone 16 Pro Max 256GB, Kártyafüggetlen, 3 Év Garanciával
- Telefon felvásárlás!! Apple iPhone 16, Apple iPhone 16e, Apple iPhone 16 Plus, Apple iPhone 16 Pro
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- ÁRGARANCIA! Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
- AKCIÓ! Lenovo IS8XM LGA 1150 DDR3 alaplap garanciával hibátlan működéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged