- Magga: PLEX: multimédia az egész lakásban
- eBay-es kütyük kis pénzért
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sh4d0w: Vigyázz a háttértáradra...
- mefistofeles: A 15 centi nagyon rövid.........
- gban: Ingyen kellene, de tegnapra
- Gurulunk, WAZE?!
Új hozzászólás Aktív témák
-
tototos
addikt
válasz
kingabo #1799 üzenetére
Végül nekem is sikerült. Nagyon köszi hogy megcsináltad.
Nálam úgy néz ki hogy van a főszál, ebből meghívok egy backgroundworkert ami az adott feladatot futtatja, pl program letöltés vagy hardver init. Ez után elindítok egy másik szálat ami a progress baron fogja futtatni a a csíkot, majd a főszálból meghívom a progressform.showdialog(this) parancsot. Erre a parancsra figyeljetek mert addig benne van míg be nem zárjuk a formot, tehát magát a főszálat teljesen megfogja. Na és Amikor a backgroundworker végzett akkor az ő eventje peidg bezárja a formot és lelövi a szálat. -
kingabo
őstag
válasz
tototos #1798 üzenetére
Na megírtam a progit nem nagyzolás miatt csak, hogy tudjak segíteni ha elakadsz/ne ajánljak hülyeséget, nem akarnám 1:1-ben odaadni, inkább jöjj rá a dolgokra Te! (nem szivatásból, csak sok buktató van, amit jó ha magad is megtapasztalsz, így késöbb tudni fogod, hogy hogyan kell megoldani) De igaziból azt is jó lenne tudni, hogy mit tanultál, meg mennyi van meg.
Nagyjából így oldottam meg: gombra katt, ami létrehoz egy új thread-et és feldobja az ablakot, ebben a thread-ben nagy számítás szimulálására létrehozok egy timert, aminek a tick eseményére megnövelem a másik formon a progressbar értékét. Hogy a lyúzer ne tudja kilőni felíratkoztam a formclosing eseményre, ennek az eseménykezelőjében, ha nem végeztem a számolással, akkor az e.Cancel = true; utasítással nem engedem, hogy bezárja. Ha végeztem a számítással bezárom az ablakot.
Ha valamit nem értesz, kevés,... kérdezz nyugodtan. -
kingabo
őstag
válasz
tototos #1793 üzenetére
Hali!
BackgroundWorker-rel sokkal könnyebb lenne megoldani, illetve a gombra kattintáskor le kell tiltani az összes formon lévő gombot és nem tud a lyúzer semmire sem kattintani. Vagy ha a gombletiltás nem tetszik, akkor egy bool változót kell deklarálnod a form-hoz, ha elkezdesz számolni igazra állítod, ha vége, akkor false-ra és minden gomb click esemény kezelőjében megvizsgálod, hogy a változó false-e, ha nem(vagyis számolsz), akkor return.
-
tototos
addikt
Sziasztok.
Szeretnék a programomhoz egy progress bart megjeleníteni amikor hoszabb utasítás fut. Tehát van a mainform, majd amikor rákattintok egy gombra akkor felugrik a prgress bar és rataja fut a csík addig amíg a feladat be nem fejeződik, és a mainformra pedig nem lehet kattintani.Erre a legjobb megodásként a showdialog függvényt találtam. Létre is hoztam egy formot és rádokkoltam egy progress bart. Csak az nem tudom pontosan hol kellene szálat létrehozni és hogy lehetne hívni a shiwdialog függvényt hogy utána le is lehessen állítani. Tudtok ebben segíteni? Olyan hibába ütköztem hogy a showdialagból soha nem akart kilépni mert ugye nem kattintok semmire a frmon, manuálisan szeretném leállítani.
-
RedSign
tag
válasz
RedSign #1788 üzenetére
Közben kicsit áthidalásos módon, de sikerült megoldanom...
Csináltam egy pictureBox2-öt a formra, majd egy timerrel folyamatosan meghívom a pushImage függvényét a webcam-omnak, ami a SaveImage alapján így néz ki:
public void pushImage(object sender)
{
Image flsh;
IDataObject data;
PictureBox kep = sender as PictureBox;
SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0);
data = Clipboard.GetDataObject();
if (data.GetDataPresent(typeof(System.Drawing.Bitmap)))
{
flsh = (Image)data.GetData(typeof(System.Drawing.Bitmap));
kep.Image = flsh;
}
} -
tototos
addikt
Köszönöm az eddigi segítséget. Még egy kérdés, hogy tudok olyat csinálni hogy egy textboxba akarok kiírni egy fájl címét, és ha túl hosszú a cím akkor középen ...-tal elválasztja majd amikor fölé viszem az egeret a teljes címet kiírja.
-
RedSign
tag
válasz
kingabo #1787 üzenetére
Igen hasonló módon, de sajnos ha a kamerát bekapcsolom az OpenConnectionnel, akkor a kép eltűnik (előtte ott van) és csak a kamera képe marad... ha leállítom, akkor visszatér a kép...
Igen lehet, mert ott van onPaint...
Hm, nem lehet hogy az a gond amit a camera kódjában olvasok?
// Create a child window with capCreateCaptureWindowA so you can display it in a picturebox.
-
kingabo
őstag
-
kingabo
őstag
válasz
RedSign #1785 üzenetére
Paint az esemény és onPaint a hozzá kapcsolódó automatikusan elnevezett esemény kezelő. Ha lenne webcam-em megpróbálnám hátha rájövök hol veszik el a kép, de így nem fog menni
(#1784) tototos: hirtelen ezt találtam: [link] Úgy látom csak ShowDialog-ra műxik sima Show-ra nem. Alul a hsz-ben van erre 1 megoldás!
-
kingabo
őstag
válasz
RedSign #1779 üzenetére
Hali!
Ha jól emlékszem a draw eseményre kell felíratkozni, ekkor kapsz egy graphics példányt is. A probléma szerintem az lesz, hogy a Te rajzolásod hamarabb lefut, mint a fenti draw, ezért ha van a webcam-nek képe, akkor azt rárajzolja a rajzodra.
(#1778) tototos: öröklődés? Létrehozol egy saját form osztályt, ami a Form-ból származik és lesz még egy plusz adattagja, ami a szűlőjére mutat.
-
RedSign
tag
Sziasztok!
Egy problémával kapcsolatban kérnék segítséget, mert amikkel ezzel próbálkoztam nem hoztak sikert.
Innen töltöttem le az osztályt a webcam kezeléséhez:
http://www.c-sharpcorner.com/UploadFile/yougerthen/810262008070218AM/8.aspxSzépen működik is, de szeretnék a képre rajzolni, ha a kamera megy - az alap formot hoztam létre ami a fenti linken szerepel - de eddig hiába próbálkoztam a pictureBox1 CreateGrpahics-szal létrehozott felületre rajzolni vagy a camera közvetlen Containeréből létrehozott felületre, csak akkor jelent meg a vonal (egyenlőre teszt), ha nem ment a kamera...
Graphics gr = this.pictureBox1.CreateGraphics();
Pen pen = new Pen(Color.Yellow, 4F);
gr.DrawLine(pen, 20, 20, 100, 100);Tudna valaki segíteni?
Előre is köszönöm!!!
RedSign
-
tototos
addikt
Sziasztok.
Egy formnak hogy tudom megadni a szülő formját? Azt szeretném használni, hogy van egy mainform majd megjelenítek egy másik formot és az pontosan a mainform közepén jelenjen meg, láttam hogy van ilyen property.
-
bpx
őstag
válasz
killerjohn #1776 üzenetére
a problémára nincs megoldásom, de miért akarod rebuildelni a komplett solutiont minden egyes alkalommal és nem csak azt az 1 projektet, amit módosítottál?
-
killerjohn
addikt
válasz
killerjohn #1763 üzenetére
up
-
Lortech
addikt
válasz
FehérHolló #1774 üzenetére
Debugolásról meg annyit, hogy tegyük fel, hogy normál módon akarod leállítani a szálakat, szerinted mindent megtettél ennek érdekében. Ha a háttérben futtatod a szála(ka)t, akkor viszont soha nem fog kiderülni (vagy csak vért izzadás árán) az ellenkezője. Tehát nem/nehezebben jössz rá, hogy mégsem úgy működik valami, ahogy eltervezted.
Nem pont erre asszociáltam debugolás kapcsán, de azt hiszem, értem mire gondolsz.
Adott esetben nem feltétlenül van jelentősége, hogy a thread hogy ért véget, mert pl. épp csak monitorozott valamit és nem érdekes, hol állt meg, vagy a gui thread nélkül nincs is értelme tovább futnia, vagy hosszan fut egy-egy tevékenység benne, és nincs idő megvárni, amíg rájön, hogy le kell állnia. Mit csináljon, várjon egy percet amíg befejezi (remélhetőleg) és eljut a következő szálban maradási ellenőrzésig? De lehet, hogy a felhasználó nem szeretné megvárni, hanem kikapcsolja a gépet, és végül fogalmunk sem lenne így sem, hogy mi történt. Vagy pedig ilyen esetben engeded kimúlni background threadként, és lekezeled a threadabortexceptiont és kilogolod a megfelelő infókat.
No de visszakanyarodva az eredeti kérdésre, ha más lett volna a kontextus, akkor nem az isBackgroundot ajánlom elsőkörben. A kérdésből úgy tűnt, hogy nem cél kontrollálni a threadet, nem cél bármi cleanupot elvégezni, csak pusztuljon a szál a processzel együtt - mivel eleve csak akkor merült fel az egész kérdés, mikor már kiderült, hogy valami nem klappol, nem áll le a processz. Persze ez lehet, hogy a körültekintés hiányából fakad, és nem tudatos. -
FehérHolló
veterán
válasz
Lortech #1773 üzenetére
A megfelelő thread cleanupot biztosítani kell ezektől függetlenül, mint ahogy a normál leállást is preferálni kell (thread értesül róla, hogy le kell állnia és leáll, ha van rá idő vagy kritikus megvárni).
Igen, ezt erőltetem. A lényegben tehát egyetértünk. Csak abban nem, hogy szerintem a kérdéses problémát csak a szőnyeg alá söpri a te megoldásod. Ha "rendesen kitakarít" a programozó, akkor semmi szükség rá. Kényelmi funkció, ami szerintem túlzottan óvatlanná teheti az egyszeri halandót.Debugolásról meg annyit, hogy tegyük fel, hogy normál módon akarod leállítani a szálakat, szerinted mindent megtettél ennek érdekében. Ha a háttérben futtatod a szála(ka)t, akkor viszont soha nem fog kiderülni (vagy csak vért izzadás árán) az ellenkezője. Tehát nem/nehezebben jössz rá, hogy mégsem úgy működik valami, ahogy eltervezted.
Konkrét probléma nélkül elég nehéz egzaktabbá tenni a beszélgetést. Én úgy érzem, hogy megértettem a te álláspontodat. Részben egyet is tudok érteni veled. Azonban én hasonló esetben (nagy általánosságban) nem fogom használni a megoldásod a fenti érvek miatt. Mások pedig cselekedjenek a saját belátásuk szerint.
-
Lortech
addikt
válasz
FehérHolló #1772 üzenetére
De akkor mi volt az, hogy idézem: "már csak oprendszer szinten lehet majd lelőni", valamint "ha erről a már háttérben futó szálról soha többé nem derül ki, hogy hibásan fut" ?
-Hogy háttérszál-e vagy sem, nincs relevanciája a debugoláskor.
-"Nem csúszik ki a kezedből", ha nem akarod.
A background thread továbbra sem különbözik semmiben egy foreground száltól, kivéve abban, amiről szó van, hogy nem fut tovább a processz miatta, ha az utolsó nem háttérszál leáll. A megfelelő thread cleanupot biztosítani kell ezektől függetlenül, mint ahogy a normál leállást is preferálni kell (thread értesül róla, hogy le kell állnia és leáll, ha van rá idő vagy kritikus megvárni).
Ha valami egzaktabb érvek mentén folyna a diskurzus, akkor lehet, hogy hamarabb dűlőre jutnánk. -
FehérHolló
veterán
válasz
Lortech #1771 üzenetére
Tudom, hogy miért ajánlottad. Ettől függetlenül nagyságrendekkel nehezebb lesz a háttérbe pakolt szál debugolása. Másrészt teljesen mindegy, hogy az oprendszer, vagy a futtató környezet lövi le, mindkét esetben kicsúszik a kezedből. (Nem azért, mert te nem tutod abortálni, hanem azért ,mert ezek után nem is fog érdekelni, hogy abortálnod kéne.)
Sokkal tisztább az, ha a form closing/closed eseménynél lekezeli az összes szálat.
Szóval van szó arról, amit írtam. -
Lortech
addikt
válasz
FehérHolló #1770 üzenetére
A daemon threadet pont azért ajánlottam, hogy le tudja állítani normálisan az alkalmazást, le fog állni az ilyen thread, ha a többi fő thread is leállt. Szó nincs arról, amikről írsz.
A válasz az volt, amit írtam + az első link, a form closingot csak úgy mellékesen linkeltem, a megoldáshoz nincs rá szükség. -
FehérHolló
veterán
-
tototos
addikt
Sziasztok.
Melyik metódus hívódik meg amikor a formon az X-re kattintok? Sajnos nem akar a program bezáródni amikor a formot bezárom, nem tud egy szálat lelőni.
-
wasyster
csendes tag
Segitseg kellene, vagy utirany ket dolgoban.
Az elso, megirtam egy progit ami SQL adatbazist hasznal. Az erdekelne hogy C# hogy lehet, feltetelezem lehet, azt lekodolni, hogy a progi automatikussan nezze meg hogy egy adott adatbazis csatolva van e az SQL serverhez, es ha nincs akkor csatolja azt a program root konyvtarabol.A masodik gond az lenne, hogy a program Reportokat general, amik DataSet-bol taplalkoznak, de ezeket a DataSet-eket LINQ2SQL-al toltom fel (nem epp a legjobb kifejezes). Ez mind szepen dolgozik, de mikor kelepsz a programbol akkor valami osszeakada SVCHOST.exe -vel. Hiaba debagolom, nem latom mivel. Mint hibat kiirja, hogy megprobaltam "unload" valamit a memoriabol ami ezt a hibat okozza.
koszi
-
RedSign
tag
Sziasztok!
VS2008-ban írtunk egy (3.5 framework) programot C#-ban, amit le is fordítottunk Windows XP SP3 alatt és az exe file egy másik gépen (azonos oprendszer) ment is gond nélkül. A kérdés annyi lenne, hogy mennyi az esélye más Windows XP SP3-as gépeken? Az aggaszt igazából, hogy egy net nélküli gépen SP3-mal valamilyen hiányzó/nem frissített dll miatt futtatási gond lehet...
Üdv,
RedSign -
killerjohn
addikt
Sziasztok!
Egy röpke kérdés, miután már agyamra megy a VS2010...
Van egy meglehetősen nagy solution, benne ~40 nem túl nagy projekttel.
A Rebuild kb 30 másodpercig tart, 4db RAID0+1-be kötött SSD-n, 3.6 GHz-re húzott quadcore gépen. Rohadjak meg ha értem...Ez azért van, mert csak 1 szálon fordít a VS (25% CPU használat).
Viszont ha nem "F6"-olok, hanem egy batch fájlban ezt futtatom:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /ponfiguration=Release /maxcpucount:4 /detailedsummary /verbosity:Minimal /fileLoggerParameters:LogFile=build.log;Verbosity=Normal;Encoding=UTF-8 /Target
ebuild wsprojects.sln
Nos, akkor nem 35, hanem 14 másodperc alatt végez, 100% cpu használat mellett...
Szépen felismeri, hogy mik a függőségek, és ügyesen, megfelelő sorrendben lefordítja az egészet.Azt én megértem, hogy az Output ablak miatt (ne keveredjenek össze a sorok) egyszerre csak 1 projektet fordít, de erre nincs valami megoldás? Nem érdekel az Output, komolyan!
A beállításoknál a "maximum number of parallel project builds"-ben 4 van, de nem igazán foglalkozik vele, és azt olvastam, hogy csak a C++ használja.
Előre is köszi!
-
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
-
SebajTobias
tag
Sziasztok lenne egy kis problémám.
A lényeg, hogy felkértek, hogy csináljak egy kis cégnek egy kis nyilvántartó progit, ami vezeti ki mennyit dolgozik, órabéreket, ki melyk projekten van stb. Én nem nagyon értek ilyesmihez, de régi ismerős nagyon eröltette.
Arra gondoltam, hogy csinálok egy adatbázist (access-est), amihez csinálok egy .NET-es felületet, amin kezelgetik az adatbázist. Eddig nagyából meg is volnék, csak ugye nem mindenki láthat mindent Pl alkalmazott a főnök fizuját stb. Plusz még egy rakás lekérdezés is futatható, és nem mindenki futtathat bármit. És itt lenne a bajom.
Az adatbázisba (Accessben) létrehoztam felhasználói csoportokat, és ott beállítottam, hogy ki mit csinálhat. A honlapon pedig van egy bejelentkező oldal, ahol belépnek a dolgozók.
Hogyan tudom összekapcsolni az adatbázis jogosultságait a honlapéval?
Vagy ez két külön dolog?
Ha nem adok az adatbázisnak jogosultságokat, akkor ugye valaki csak megnyitja Access-el, és belekukkanthat. De a honlapon se tudjon belepiszkálni ill. lekérdezéseket futtatni, csak azokat ami rá tartozik..
Remélem érthető voltam, ha van valami ötlet légyszi írjátok meg.
Köszi -
Gregorius
őstag
válasz
FehérHolló #1758 üzenetére
Ha jól látom, a BlockingCollection<T> az egy wrapper a ConcurrentQueue fölött, úgyhogy ha blokkoló viselkedésre van szükség, akkor ez a megoldás.
Továbbá ha nem szigorú követelmény, hogy a feladatokat érkezési sorrendben kell megoldani, akkor még ajánlanám a Task Parallel Library áttanulmányozását (TaskFactory.StartNew, stb). Ezzel pofonegyszerű több szálra szétpakolni a feldolgozást. -
FehérHolló
veterán
válasz
tototos #1757 üzenetére
Így első nekifutásra ha a ConcurrentQueue-t használod, akkor valamivel meg kell fognod a fogyasztó (nálad protokoll) szálat üres queue esetén, különben megzabálja a procit üresjáratban.
Ha blokkolni is szeretnél, akkor szerintem (megint első nekifutásra) hasznosabb lehet a BlockingCollection osztály. Ez blokkolja a fogyasztó (protokoll) szál futását üres queue, a termelő (kártya) szálat pedig teli puffer esetén.De szerintem jobban jársz, ha megvárod Gregorius válaszát. Ő nagyon nagy valószínűséggel jobban ért a .NET 4.0-hoz.
És igen, elég késő van.
-
tototos
addikt
válasz
FehérHolló #1756 üzenetére
hmm, lehet késő van már és fáradt vagyok. Szóval a kártya szálljában pakolom bele az üzeneteket, majd a protocol szálljában meg szedem ki, és adom tovább a függvényeknek. Ha kiürült a puffer akkor vár az üzenetre és ha bekerült egy akkor megint kiolvassa vagy nekem kell erről gondoskodni? Szóval megúszhatom a szálak közti jelzést?
-
FehérHolló
veterán
válasz
tototos #1755 üzenetére
Ez körülbelül arra jó, hogy egy puffert threadsafe módon kezel. Tehát egyszerre csak egy szál férhet az osztály egyes példányaihoz hozzá. Megspórolja egy csomó munkádat, átláthatóbbá teszi a kódot.
Más: Úgy látszik, nem igazán tudtam helyesen írni az előbb. Pedig még nem is ittam szinte semmit. Szóval bocs.
-
tototos
addikt
válasz
Gregorius #1752 üzenetére
Köszi ez nagyon jól hangzik. Szóval amikor megjön az üzenet akkor bepakolom és a másik oldalt pedig csak folyamatosan olvasom és ő várakozik mindig ha üres. Ha egymás után gyorsan jönnek az üzenetek akkor sem fog megszakítást generálni gondolom hanem szépen feldolgozhatom az üzeneteket.
-
FehérHolló
veterán
válasz
FehérHolló #1753 üzenetére
Hogy őszinte legyek, pont egy ilyen működést megvalósító osztályt kreaáltam a probléma megoldására... Queue + eventtel kölcsönös kizárás.
-
Gregorius
őstag
válasz
FehérHolló #1750 üzenetére
Ha itt egy termelő-fogyasztó patternt kellene megoldani, ahhoz inkább a ConcurrentQueue<T>-t kellene használni. Ld. még System.Collections.Concurrent.
-
tototos
addikt
válasz
FehérHolló #1750 üzenetére
Hali.
Köszi a választ. Fél évet tanultam egyetemen C#-t meg többszálú alkalmazást is írtam. A kártyát is ismerem nagyjából. Írok privit.
-
FehérHolló
veterán
válasz
tototos #1748 üzenetére
Gondolom, ez egyértelmű, de több szálon kell megoldanod.
A CAN-t figyelő thread töltsön egy puffert, ami az üzenetek leíróját tartalmazza. Miután megjött X darab (ne egyesével), szóljon a feldolgozó szálnak egy AutoResetEvent típusú példányon keresztül. A feldolgozó szál pedig pakolja ki a puffert, és az üzenet típusától függően dolgozza fel azokat.
Ehhez ami kell MSDN-ről ([link]):
- Linkedlist ([link])
- Szálkezelés ([link]) + tutorialok.
- AutoResetEvent: [link]Konkrét megoldát nem akarok, és nem is tudok mondani, esetleg csak részleteket. Ha új vagy C#-ban és többszálas programozásban, ráadásul a CAN kártya is teljesen új számodra, akkor olyan 30-40 óra körülire saccolom a feladatot.
Ha esetleg a KB monogramra hallgató cégnek csinálod ezt, vagy egy Vector cég által gyártott CAN kártyával akadt dolgod, akkor kérlek vedd fel velem a kapcsolatot privátban!
ArchElf: OnReceive csak a WinFormson alapértelmezett tudtommal. Amilyen CAN wrapperekkel eddig találkoztam, mind ipari szemét volt a Microsoft elképzeléseihez képest.
-
tototos
addikt
Sziasztok!
Olyan feladatot kaptam, hogy can buson keresztül programozzak fel egy mikrovezérlőt. A can bus kártyához van .net támogatottság. Amikor bejön egy üzenet akkor a kártya ezt jelzi és veszi majd tovább tudja adni másik osztálynak. Az lenne a kérdésem hogy to hogy oldanátok meg hogy minden üzenetet megkapjon egy másik osztály és ott feldolgozza sorba őket? Van olyan hogy egymás után bejön 5 üzenet és ezeket kellene sorba feldolgozni. Próbálkoztam delegattel meg autoreseteventtel de nem sok sikerrel. Túl sűrűn jönnek az üzenetek hogy a programban rendes feldolgozás menjen.
Szóval kb vázolom mit kell megvalósítani.
osztály 1 elküld egy üzenetet majd vár hogy jöjjön rá válasz. A kártyának is van egy kezelő osztálya ami veszi az üzenetet egy szálban folyamatosan ezt berakja egy bufferba majd egy jelzést küld hogy üzenet érkezett. Ezt a jelzést kellene érzékelni és az eseményeket sorba állítani.class vector{
rxthread{
while(true){
wait for message{
message received,
message to buffer,
received message event set
}
}
}
}
class protocol{
function1{
send message
wait answer
answer received
message handle
wait for next message
}
} -
bod101
aktív tag
válasz
FehérHolló #1745 üzenetére
Köszönöm, ott is próbálkozom.
-
bod101
aktív tag
Sziasztok!
Tudna valaki ötletet adni szoftverfejlesztés párhuzamos és elosztott környezetben téma alatt esszére?
Miről lehetne irni, forrást szerezni hozzá -
sagit
veterán
sziasztok
Tényállas: idei szemeszterben Visual Studio 2010-el programozunk az egyetemen, de nem sikerült órákat felvennem, és az egyetlen gyakorlat ami nekem jó betelt. Namár most a tanár megengedte hogy laptoppal beüldögéljek, de laptopom az nincs és rohadtul nincs is szükségem rá ( otthon asztali, egyébként teló)... tehát valami olcsó megoldás után néztem.
Találtam is egy fapados eee pc-t ami arra jó lenne hogy ezt a félévet kihúzzam vele.
De a felbontása csak 800*600, az lenne a kérdés hogy ezen a felbontáson elindul a program? A többi összetevő nem lényeg.. nemgáz ha lassú lesz.. csak fusson és be tudjak járni.
előre is köszi az infót
-
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
-
FehérHolló
veterán
válasz
FehérHolló #1737 üzenetére
Úgy tűnik, hogy nem annyira okos, hogy magától tabuláljon.
A szerkesztőd majd tabulálja, ha bemásolod.Egyébként az kimaradt, hogy ezt a while(true) cikluson belülre kell írni, de remélem, egyértelmű volt.
-
FehérHolló
veterán
válasz
Vasinger! #1736 üzenetére
Ha mindenképp látni akarod a betűt, akkor Console.ReadLine().
Csak akkor kicsit finomítani kell, hogy 0 hossznál ne csináljon semmit és 1-nél hosszabbnál csak az első betűt szeresse a feldolgozáskor.string b_s;
b_s = Console.ReadLine();
if(b_s.Length > 0)
{
b = b_s[0];
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;
}
} -
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
-
szabodani
csendes tag
Van egy véletlen számokból tömböm amibe vannak számok,és azokat a számokat összeadtam hogy hány db van belőle.
És a kérdés hogy tudom azt megcsinálni hogy egy másik tömböt hozok létre mibe a számok db számát tárolom? -
Vasinger!
nagyúr
Kéne megint egy kis help.
Van ez a program:
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!");
int a;
char b;
bool logika = false;
Random rnd = new Random();
a = rnd.Next(26);
a = a + 96;
do
{
b = (char)Console.Read();
int intASC2 = System.Convert.ToInt32(b);
if (a < intASC2)
{
Console.WriteLine("A betű előrébb van az ABC-ben");
}
if (a > intASC2)
{
Console.WriteLine("A betű hátrább van az ABC-ben");
}
if (a == intASC2)
{
Console.WriteLine("Talált!");
logika = a == intASC2;
}
} while (!logika);
Console.ReadLine();
}
}
}Nah most ha ti is elindítjátok a programot látjátok, hogy nincs vele valami rendben. Kiír +2 sort teljesen feleslegesen. Miért? Egyszerűen nem jövök rá.
Ha a bool-t átírom true-ra akkor csak egyszer dobja ki, de egyből kis is lép. Mi a megoldás? -
Jester01
veterán
Azért az egy elég csúnya példaprogram volt...
1. minek is bele annyi using?
2. minek beledrótozni az ascii kódot ha egyszer a fordító is tudja?
3. minek stringgé konvertálni, ha char-t is ki lehet írni?
4. minek a WriteLine hívásba még egy enter
5. ... és azt miért string összefűzéssel kell beletenni?
6. minek kell a betu változót inicializálni
7. ... és miért nem a ciklusmagban van?
8. miért nem lehet eleve char a ciklusváltozó?Az egy dolog ha valami működik, de lehetőség szerint ne ilyeneket tanítsunk már...
using System;
namespace abc
{
class Program
{
static void Main(string[] args)
{
for (char c = 'A'; c <= 'Z'; c++)
{
Console.Write(c);
}
Console.WriteLine();
}
}
} -
j0k3r!
őstag
válasz
Vasinger! #1725 üzenetére
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace abc
{
class Program
{
static void Main(string[] args)
{
string betu = "";
for (int i = 65; i <= 90; i++)
{
betu = ((char)i).ToString();
Console.WriteLine(betu+"\n");
}
}
}
}a 65 meg 90 az ascii kodja az 'A' es 'Z' karakternek.
-
Vasinger!
nagyúr
Hogyan tudom kiíratni az angol ABC nagybetűit?
Addig eljutottam, hogy ciklussal kell (vagynem) és elég a kisbetűket kikeresni, majd utólag To.Upper paranccsal nagybetűsíteni.
De maga az a parancs, hogy ABC betűit kiíratni az nem megy. -
RedSign
tag
válasz
Vasinger! #1723 üzenetére
Annyit azért akkor írjál át a programban, hogy 0 és 99 között "gondol" a program, mert egy 0-ás randomszámnál sohasem találja ki a felhasználó...
...vagy adj hozzá 1-et...
A az mind1, hogy 1 és 100 között vagy 0 és 99 között, a lényeg, hogy random legyen.
Console.WriteLine("Gondoltam egy számra 1-100 között, Találd ki!");
-
j0k3r!
őstag
válasz
Vasinger! #1720 üzenetére
elejen letrehozol egy bool tipusu valtozot, amit false kezdeti ertekkel latsz el:
bool logika = false;
a logika valtozo csak akkor valt igazra (true), ha a == b, tehat amikor a ket szam megegyezik.
eppen ezert a ciklusod addig megy
amig logika nem igaz -> while(logika != true) -> while(!logika)amugy, asszem a
a = rnd.Next(100);
nem 1 es 100 kozotti szamot general, hanem 0-99 koze esot
random class -
Vasinger!
nagyúr
Üdv.!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gondoltam egy számra 1-100 között, Találd ki!");
int a, b;
bool logika = true;
Random rnd = new Random();
a = rnd.Next(100);
do
{
b = Convert.ToInt16(Console.ReadLine());
if (a < b)
{
Console.WriteLine("A szám kisebb");
}
if (a > b)
{
Console.WriteLine("A szám nagyobb");
}
if (a == b)
{
Console.WriteLine("Eltaláltad a számot");
logika = a == b;
}
} while (true);
Console.WriteLine("Miért nem lépsz ki?");
Console.ReadLine();
}
}
}Van egy ilyen progim, de valamiért nem 100-as. A végén nem írja ki azt a szöveget "Miért nem lépsz ki?" és le is fagy. Ez az első hátultesztelős ciklusos progim, így nem nagyon értem a szintaktikáját, hogy ez miért nem tetszik neki.
A végén nem lép ki. 5let? -
pethYeti
addikt
Köszi!
-
pethYeti
addikt
Üdv!
Bocs lehet off.
A Visual Studio 2010-nek mennyi helyre van szüksége a C meghajtón? Valamint a 2008-nak?
Köszi előre is!
-
x007
tag
válasz
ArchElf #1709 üzenetére
Röviden összefoglalom:
Ez egy SOA framework, a lényege, hogy kommunikációs végpontokat (Endpoint) tudsz definiálni.A végpontokat meghatározza: ABC
Address: A végpont címe (többféle URI van, a bindingtól függ, hogy milyet kell használni)
Binding: A végpontnál használt protokoll, ebből többféle gyári megvalósítás van: [link]
Contract: Ez végpont interface-e, ami meghatátozza, hogy milyen műveleteket lehet végrehajtani.Itt egy nagyon egyszerű példa, ami szerintem a Te igényeidet is fogja fedni [link]
-
Lortech
addikt
Azért ne használjon var-t (még), mert ennek a megfelelő, körültekintő használata, egyáltalán a megértése komolyabb tudást feltételez, mint ami a példából láthatólag megvan. Ha a végrehajtás sorrendje - szekvencia, vagy egy alap beolvasás, kiíratás, egyszerű típushasználat problémát okoz, "proc.", fgv. használatát keveri, akkor még ráér type inference-t használni.
Ezen a szinten konkrétan a példában azért sem szerencsés, mert kezdő számára nem biztos, hogy egyértelmű, hogy melyik változó vagy kifejezés itt milyen típusú lesz, string és numerikus érték, azok konverziója és egy rajtuk végzett művelet is van benne.
A tanulás megfelelő sorrendje is fontos szerintem, először legyen tisztában azzal, hogy hol, milyen típus várható, majd később ráér a compilerre bízni ezt. -
válasz
Lortech #1703 üzenetére
"Előszöris szerintem nem kéne var-t használnod ezen a szinten és konkrétan erre a feladatra."
Miért ne? Mindenhol használható. Szerintem érdemes hamar megszokni - csak persze meg is kell érteni, ezért kell utánaolvasni.
A hiba pontosan az, amit írsz, hogy amikor kiírunk, akkor WriteLine, amikor beolvasunk, akkor ReadLine kell a ReadKey pedig szolgáljon csak a program megállítására, ne legyen más funkciója.
Értelme volna mórickázni, de mégsem, mert a példa nem alkalmas semmire. Az alapoktól kezdeni annyit tesz, hogy megérteni az osztályokat, interfészeket, a C# beépített dolgait, hívásait. Példának pedig olyat érdemes nézni, kitalálni, aminek haszna is van. Mondjuk egy számológép. Kicsi, könnyű, nagyon alap.
ArchElf:
Sajnos egyelőre passzolok, ilyeneket mostanában nem csináltam... de megnézem, hátha akad valami régebbről. -
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
-
Lortech
addikt
válasz
Neil Watts #1702 üzenetére
Előszöris szerintem nem kéne var-t használnod ezen a szinten és konkrétan erre a feladatra.
Console.WriteLine(a);
-a változó értéke üres string, nincs mit kiírnia (egy sorvégén kívül - WriteLine).Console.ReadKey();
-[link]
Lásd a metódus dokumentációját. Ez nem azt csinálja, amit szerintem te szeretnél elérni, de amúgysem jól használod.
Ennek hatására annyit csinál a program, hogy vár 1 db leütésre. Nem kerül be "a" változóba a beírt szöveg/szám, meg semmi hasonló.
Írj a = Console.ReadLine(); -t helyette. És beolvasás után kéne kiiratni a tartalmát, hacsak nem a beolvasás előtti tartalmát akarod kiírni a változónak.Console.WriteLine(a + b);
- ez konkatenálni fogja a stringet ebben az esetben, mivel string típusok esetén a + operátor ezt jelenti, tehát ha a = "1", b = "2", akkor a + b == "12", nem pedig 3.
A stringet át kell alakítani a fent már említett módon pl. egy int vagy valamelyik szám típussá, és úgy összeadni őket.Olvass sokat az alapokról mielőtt kódot írsz szerintem, vagy nézegess meg egyszerű, működő példákat, ennek én így sok értelmét nem látom.
-
lol.
ennek meg mi baja lehet?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace szervusz
{
class Program
{
static void Main(string[] args)
{
var a = "";
var b = "";
Console.WriteLine("Mondj egy szamot!");
Console.WriteLine(a);
Console.ReadKey();
Console.WriteLine("Mondj megegy szamot!");
Console.WriteLine(b);
Console.ReadKey();
Console.WriteLine("Osszeadtam oket");
Console.WriteLine(a + b);
Console.ReadLine();
}
}
}Mindent megcsinal, csak nem irja ki a es b erteket
vagyis nem latom. Hogy tudnam megakasztani?
Udv. core2
-
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- BESZÁMÍTÁS! LENOVO LOQ 15AHP9 15 FHD notebook - R7 8845HS 32GB DDR5 1TB SSD RTX 4060 6GB WIN11
- BESZÁMÍTÁS! ASRock X570 R9 5900X 32GB DDR4 1TB SSD RX 7800 XT 16GB Fractal Design Meshify 2 850W
- Zebra ZP505 EPL hőpapíros címkenyomtató
- BESZÁMÍTÁS! Apple MacBook Pro 16 2024 M4 Max 64GB 2TB SSD macbook garanciával hibátlan működéssel
- Fém, összecsukható és kihúzható fotó állvány eladó
Állásajánlatok
Cég: FOTC
Város: Budapest