- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Az NVIDIA ipari AI-felhőt épít a németeknek, együtt az OpenAI és a Google
- Két új Ryzen közül választhatnak a kézikonzolok
- Milyen videókártyát?
- Sony MILC fényképezőgépcsalád
- AMD Navi Radeon™ RX 9xxx sorozat
- Autós kamerák
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- HiFi műszaki szemmel - sztereó hangrendszerek
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Házi hangfal építés
- Milyen billentyűzetet vegyek?
Új hozzászólás Aktív témák
-
Jester01
veterán
És hány darab prím van Int32-ben? Gondolom megnézted nem éri-e meg jobban magukat a prímeket tárolni (akár delta kódolással).
-
ArchElf
addikt
Találtam egy példát, ahol gyorsabb az előre leszámolt
Primszamvizsgalat. Kerem a vizsgalando szamot: 998877665544332111
Primszamitas (új) folyamatban...
Osztoi:
nincsenek
Primszam.
Számítás időtartama: 27917 ms
Primszamitas (math) folyamatban...
Osztoi:
nincsenek
Primszam.
Számítás időtartama: 71188 ms
A kilepeshez nyomjon le egy billentyut!AE
-
ArchElf
addikt
Ehh
Megoldottam az egészet, gyorsabban 512 MB memória nélkül is...
Egyszerű matek. Úgy tűnik a sok memória és a sok számítás meg feltétel lasabbá teszi az egészet, mint az egyszerű számítgatás.private static bool isPrimeWithCountNewSingular(Int64 szam)
{
Console.WriteLine("Osztoi:");
// Lista az osztók tárolására
List<long> osztok = new List<long>();
long bc = szam;
Int64 ix = 2;
bool search = true;
while (search)
{
long lr;
long sq = (long)Math.Floor(Math.Sqrt(bc));
if ((lr = GetPrimes(szam, ref bc, ref ix, ref search, sq)) != 0)
osztok.Add(lr);
}
if (osztok.Count == 0)
{
Console.WriteLine("nincsenek");
return true;
}
else
{
Console.WriteLine("{0} prímtényezőre osztható, melyek a következők:", osztok.Count);
foreach (long l in osztok)
Console.Write("{0} ", l);
Console.WriteLine();
return false;
}
}
private static long GetPrimes(long szam, ref long bc, ref Int64 ix, ref bool search, long sq)
{
long oszto = 0;
bool mul = false;
while (ix <= sq)
{
if (bc % ix == 0)
{
bc /= ix;
mul = true;
oszto = ix;
break;
}
ix++;
}
if (!mul)
{
if (bc != szam)
oszto = bc;
search = false;
}
return oszto;
}FCK... mást nem akarok mondani.
AE
-
ArchElf
addikt
folyt.
prímszámítás kommentezve:private static bool isPrimeWithCountNew(Int64 szam)
{
Console.WriteLine("Osztoi:");
// Lista az osztók tárolására
List<long> osztok = new List<long>();
int result_x;
// Ha nem nyilvántartott prímszám akkor elkezdjük keresni
if ((result_x=GetPBit(szam)) != 1)
{
// keresési érték = kezdőérték
// elsőször egyenlő a számmal
long bc = szam;
// prím keresés első lépésének inicializálása
Int64 ix = 2;
// Addig iterálunk, míg minden gyököt meg nem találunk,
// vagy a sor végére nem érünk
while (true)
{
// amennyiben a keresési érték prímszám eltároljuk és kilépünk a ciklusból
// ez nem lehet az eredetileg keresett szám,
// mert akkor az előző feltételnél nem jutottunk volna be ide
if (GetPBit(bc) == 1)
{
osztok.Add(bc);
break;
}
// a négyzetgyökének veszzük a keresési kezdőértéknek
// kezdeti eseben az első iteráció a kezdeti szám négyzetéig keres
// ha eddig nincs találat a szám prímszám és > UInt32
long sq = (long)Math.Floor(Math.Sqrt(bc));
// ha a keresési kezdőérték prím és a négyzete kiadja a
// a keresett keresési kezdőértéket
// kétszer berakjuk a listába és kilépünk a ciklusból
if ((sq * sq == bc) && (GetPBit(sq) == 1))
{
osztok.Add(sq);
osztok.Add(sq);
break;
}
// osztási sort elkezdjük, addig megyünk,
// amíg a négyzetgyököt el nem érjük
bool mul = false;
while (ix <= sq)
{
int result;
// amennyiben az ix (keresési lépés) prímszám,
// megpróbálunk osztani vele
if ((result = GetPBit(ix)) == 1)
{
// ha sikerül az osztás maradék nélkül,
// a keresési kezdőértéket elosztjuk a
// keresési lépéssel és újrakezdjük külső ciklust
// a találta osztót a listához adjuk
// megjelöljük, hogy volt sikeres osztás
if (bc % ix == 0)
{
bc /= ix;
mul = true;
osztok.Add(ix);
break;
}
}
// amennyiben az keresőszámhoz tartozó tartományban (8 szám - 1 byte)
// nincs prím, úgy előre lépünk 8-at
if (result == -1)
ix = (((ix >> 3) + 1) << 3);
// minden más esetben növeljük a keresőszámot 1-el
else
ix++;
}
// ha nem találtunk osztót
if (!mul)
{
// ha a keresőszám != a keresett számmal,
// akkor a keresőszám > UInt32 és prím
// hozzáadjuk a listához
if (bc != szam)
osztok.Add(bc);
// kilépünk a külső ciklusból
break;
}
}
}
if (osztok.Count == 0)
{
Console.WriteLine("nincsenek");
return true;
}
else
{
Console.WriteLine("{0} prímtényezőre osztható, melyek a következők:", osztok.Count);
foreach (long l in osztok)
Console.Write("{0} ", l);
Console.WriteLine();
return false;
}
}
} -
ArchElf
addikt
folyt.
A program működése közben az egész fájl MemoryStream-ben van (loadbase()) és az összes keresési művelete abból hajtja végre. Ez nagyságrenekkel nagyobb, mint a file IO. Mondjuk látszik is a teljesítményen (az első megvalósításom File IO alapú volt, ott a 7-es sort 1.5-2 óra körül akarta megcsinálni MemorySteram-ből megvolt 1:34 perc alatt).A programot folytatandó: A bit-kódolás az eredeti byte kódolás alapján történik, pl az első 3 byte:
a c| 2 8| 8 a|...
--------+--------+--------+...
10101100|00101000|10001010|...
--------+--------+--------+...
|111111 |22221111|...
76543210|54321098|32109876|...Kicsit fejére fordítottnak tűnik, de ezt a bitkódolás miatt van (számolni egyszerűbb így, mintha bitsorrendben lenne - amúgy meg ha little-endian rendszerben néznénk, jól rakná ki a sort).
AE
-
yash
senior tag
147,4 MB compressed (RAR). ZIP-pel sem lehet sokkal rosszabb. 10MB/s IO sebessegnel szeritnem lehet ertelme a dolognak.
-
yash
senior tag
RAR 30%-osra becsli (most alltam csak neki) a bin fajl tomoriteset. Nem tudom, lehet jol jarnal egy tomoritesi algoritmus beiktatasaval, akkor az 512 MB-s fajjlt gyorsabban huzza be a lemezrol, es ha on-the-fly elegy gyorsan ki lehet bontani, hamarabb indulhatna talan a program. Persze ez reszletkerdes, csak erdekessegkeppen megemlitem! Neha ez is tud gyorsitani jelentosen a dolgokon! (PDA szinkronizacional teszteltem egyszer, hogy egy 100 megas compact SQL adatbazis 12 oras rekordonkenti attoltese helyett a teljes adatbazis egy fajlkent valo, tomoritett atvitele 5 perc
szoval azert van kulonbseg sok esetben! van egy ingyenes nagyon egyszeru kis (home hasznalatra ingyenes) ZIP framework, purely written in C#: ComponentAce ZipForge.NET. Par sor az extra kod, esetleg probald felhasznalni!
-
ArchElf
addikt
Az 1 p az nem a számítás, hanem a program indítása.
Mindenesetre ez most sem mérvadó, mert most látom, hogy 11 óra óta fut a mailbox-jaim és a home folderem indexelése, és az elég sok IO-t eszik. Szóval lehet hogy emiatt indul lassan a program. A prímtényezőkre bontást megcsinálja már 2-3mp alatt. Ha nem csak egyszer kellene számolni, akkor szupergyorsnak lehetne minősíteni.
Amúgy szóban itt is tudom kommentelni.
build() + build2()
A PBIN fájl feladata: Minden BIT egy egy számot jelent a számsorban az 0-UInt32 tartományban. A fájl generálásnál az alapötlet az volt, hogy végig feltöltöm 0xff értékkel és aztán 2-től az összes prímszámra az összes szorzóra kinullázom a biteket. A prímszám úgy jön ki, hogy ha kinullázom az 2 összes szorzatát (kivéve saját magát), akkor a sorban következő szám a 3 lesz. Kinullázom az összes 3-ast (kivéve a 3-at), így a 4 már ki lesz nullázva, a következő szám az 5. Az 5-ösöket is kinullázom, a 6 már nulla, jön a 7, utána a 8-9-10 már kész, jön a 11... és így tovább. Másrészt a szorzókat is úgy választom meg, hogy csak az eddig ki nem nullázott számokkal szorzok. Pl 11 nál az első szorzó a 11 lesz (hiszen ezalatt már mindent leszoroztunk), 12-vel nem kell szorozni (hiszen az 2*2*3), a következő a 13 lesz... így elég "gyorsan" legenerálja az UInt32-es sort. Náhány perc alatt.
Mivel azonban gyorsítani szeretném a számolást tudom hogy a 2-3-5 szorzatai (bájtokban) egy 15 bájtból álló sorozatot alkotnak, elég ha ezzel inicialzálom az 512MB-os tömböt és a számolást a 7-esnél kezdem (a 2-3-5-7 kezdősorozat már 105 bájt hosszú, és nem volt kedvem ezt mind bepötyögni és leellenőrizni).
A hash függvény arra kellett, hogy a jól (!) legenerált PBIN fájlt leellenőrizzem, hiszen ez tartalmazza az összes prímet 2-UInt32 -ig.
folyt...AE
-
yash
senior tag
Koszonjuk szepen a megfejtest, eddig te vagy az elso
Igazabol, egy kommentekkel mespekelt verzionak is tudnank orulni, ha van szabadidod! Ha van vmi publikus ftp szervered vagy http, ahonnan le tudnank tolteni a magyarazatokkal ellatott forraskodot, annak nagyon tudnek orulni! Eleg nehez megerteni ezt a hash logikas kodot. Esetleg a felhasznalt forrastanulmanyokat is csatolhatnad!
mod: az 1 perc az lehet kicsit lassu lesz statisztikai alapon. Egy 9 szamjegyu szamrol az en verziom ha jol emlekszem 5-6 masodperc alatt mondja meg, hogy prim-e. INT64_MAX-szal meg nem probaltam, lehet mindjart adok neki egy kort...
mod2: most keszul a prime.bin-em
nemsokara meglatom mit tud a te verziod. azert az a 530 MB RAM megeves nem semmi forditaskor
Ebbol is latszik, milyen piti feladahtoz milyen sok otlet lehetseges, es korantsem biztos, hogy meg van hozza minden gepen a szukseges eroforras!
-
ArchElf
addikt
Kicsit karcsúsítottam, így belefért egy hozzászólásba. Sajnos így kimaradt egy csomó státusz jelentés - Console.WriteLine("Éppen ezt, vagy csinálom"); - a legenerálás alatt, így csak az üres képernyőt látja az ember egy jó ideig.
Az első futásnál legenerálja az 512MB-os fájlt - ez kb 10 perc egy 2GHz-es gépen -, utána már gyorsan - kb 8-10 mp alatt - indul.
Kicsit dagályos néhol még a kód, nem nagyon törődtem a rövidséggel.AE
-
ArchElf
addikt
using System;
using System.Collections.Generic;
using System.IO;
namespace TestCon
{
class Program
{
static string PBIN = "prime.bin";
static long PLEN = 1024 * 1024 * 512;
static MemoryStream MPSTREAM;
static FileStream PSTREAM;
static byte[] B235DATA = new byte[] {
0x82, 0x28, 0x8a, 0xa0, 0x20,
0x8a, 0x22, 0x28, 0x88, 0xa2,
0x08, 0x0a, 0xa2, 0x28, 0x82 };
static string PBMD5 = "75b7c17fa77f8d12017cf69fca36c626";
static int B235LENGTH = 15;
static void Main(string[] args)
{
try
{
PSTREAM = File.Open(PBIN, FileMode.OpenOrCreate, FileAccess.ReadWrite);
if (!checkmd5())
{
build();
loadbase();
build2();
}
else
loadbase();
PSTREAM.Close();
startApp();
}
catch (FormatException)
{
Console.WriteLine("\n\nPozitiv egesz szamokat lehet csak megadni.");
endApp();
}
catch (Exception)
{
Console.WriteLine("\n\nHiba tortent.");
endApp();
}
}
private static bool checkmd5()
{
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
md5.Initialize();
PSTREAM.Position = 0;
byte[] bmd5 = md5.ComputeHash(PSTREAM);
PSTREAM.Position = 0;
string st = "";
foreach (byte b in bmd5)
st += b.ToString("x2");
return (st == PBMD5);
}
private static void build()
{
long flength = PLEN / B235LENGTH;
for (long ix = 0; ix < flength; ix++)
PSTREAM.Write(B235DATA, 0, B235LENGTH);
PSTREAM.Write(B235DATA, 0, ((int)PLEN % B235LENGTH));
}
private static void loadbase()
{
MPSTREAM = new MemoryStream();
MPSTREAM.Capacity = 512 * 1024 * 1024;
byte[] bl = new byte[1024];
PSTREAM.Position = 0;
MPSTREAM.Position = 0;
for (int ix = 0; ix < 512 * 1024; ix++)
{
PSTREAM.Read(bl, 0, 1024);
MPSTREAM.Write(bl, 0, 1024);
}
MPSTREAM.Position = 0;
}
private static void build2()
{
// first byte mark
// 10101100 : 0xac
MPSTREAM.Seek(0, SeekOrigin.Begin);
MPSTREAM.WriteByte((byte)0xac);
int pbx, pby;
for (int ix = 7; ix < UInt16.MaxValue; ix++)
{
if ((pbx = GetPBit(ix)) == 1)
{
for (long iy = ix; iy < UInt32.MaxValue; iy++)
{
if ((pby=GetPBit(iy))==1)
{
long ip = (((long)ix) * iy);
if (ip <= ((long)UInt32.MaxValue))
ClearPBit(ip);
else
break;
}
else if (pby == -1)
iy = (((iy >> 3) + 1) << 3) - 1;
}
}
else if (pbx == -1)
ix = (((ix >> 1) + 1) << 1) - 1;
}
PSTREAM.Position = 0;
MPSTREAM.WriteTo(PSTREAM);
}
private static int GetPBit(long ix)
{
if (ix > UInt32.MaxValue) return -2;
int px = (int)(ix >> 3);
int pp = (int)(ix & 0x07);
MPSTREAM.Seek(px, SeekOrigin.Begin);
byte pb = (byte)MPSTREAM.ReadByte();
MPSTREAM.Seek(-1, SeekOrigin.Current);
if (pb == 0) return -1;
return ((pb >> pp) & 0x01);
}
private static void ClearPBit(long ix)
{
int px = (int)(ix >> 3);
int pp = (int)(ix & 0x07);
MPSTREAM.Seek(px, SeekOrigin.Begin);
byte pb = (byte)MPSTREAM.ReadByte();
MPSTREAM.Seek(-1, SeekOrigin.Current);
byte pm = (byte)((0x01 << pp) ^ 0xff);
pb = (byte)(pb & pm);
MPSTREAM.WriteByte(pb);
}
private static void endApp()
{
Console.WriteLine("\n\nA kilepeshez nyomjon le egy billentyut!");
Console.ReadKey();
}
private static void startApp()
{
Int64 szam;
Console.Write("Primszamvizsgalat. Kerem a vizsgalando szamot: ");
szam = Int64.Parse(Console.ReadLine());
if (szam > 1)
{
Console.WriteLine("\nPrimszamitas (új) folyamatban...\n");
if (isPrimeWithCountNew(szam))
Console.WriteLine("Primszam.");
else
Console.WriteLine("Nem primszam.");
}
else
{
Console.WriteLine("\n\nA vizsgalatot csak egynel nagyobb pozitiv egesz szamokra lehet elvegezni!");
}
endApp();
}
private static bool isPrimeWithCountNew(Int64 szam)
{
Console.WriteLine("Osztoi:");
List<long> osztok = new List<long>();
int result_x;
if ((result_x=GetPBit(szam)) != 1)
{
long bc = szam;
Int64 ix = 2;
while (true)
{
if (GetPBit(bc) == 1)
{
osztok.Add(bc);
break;
}
long sq = (long)Math.Floor(Math.Sqrt(bc));
if ((sq * sq == bc) && (GetPBit(sq) == 1))
{
osztok.Add(sq);
osztok.Add(sq);
break;
}
bool mul = false;
while (ix <= sq)
{
int result;
if ((result = GetPBit(ix)) == 1)
{
if (bc % ix == 0)
{
bc /= ix;
mul = true;
osztok.Add(ix);
break;
}
}
if (result == -1)
ix = (((ix >> 3) + 1) << 3);
else
ix++;
}
if (!mul)
{
if (bc != szam)
osztok.Add(bc);
break;
}
}
}
if (osztok.Count == 0)
{
Console.WriteLine("nincsenek");
return true;
}
else
{
Console.WriteLine("{0} prímtényezőre osztható, melyek a következők:", osztok.Count);
foreach (long l in osztok)
Console.Write("{0} ", l);
Console.WriteLine();
return false;
}
}
}
} -
ArchElf
addikt
Amikor debug módban futtattam az első prímszámítás (7-es sor) 23 órát akart futni.
De release módban végigszámolja az összes 7-el osztható számot az int32 tartományon. Látom ám már hogy egy idő után az IO nagyobb korlát lesz, mint a számolás.
Ehh, memory steram-en, kellene számoltatni...AE
-
ArchElf
addikt
Amennyiben egy Int64-nek nincs Int32-es gyöke, úgy prímszám...
Ez a megoldás az Int64-es kérdésre
Kicsit részletesebben: a gyökkeresést elég elkezdeni a szám négyzetgyökétől lefelé, mivel bár lehetnek afeletti gyökei is, de ahhoz tartoznak négyzetgyök alattiak. Amennyiben azok megvannak, úgy megkapjuk a négyzetgyök felettieket is. Amennyiben nincs négyzetgyök alatti gyöke, biztos nincs afeletti sem.
Az Int64 pedig ugyebár Int32*Int32...AE
-
yash
senior tag
válasz
Jester01 #871 üzenetére
1) igen ki kell (kulonben nagyon egyszeru lenne olyan kodot irni, ami az elso osztonal kilep egy break-kel a for-bol pl
2) az Int64 remiszto, de pont emiatt lehet vele jatszani, ha valaki gyorsabb algoritmust tud ket reszre bontott Int32-vel, ugy is neki lehet allni, tehat jo otlet
3) 2GB RAM all rendelkezesre, szukseg eseten virtualis memoria szinten ennyi es fix.
4) eleg egy szamot ellenoriznihajra!
-
yash
senior tag
Miniprogramozo versenyt hirdetek (jatek)!
A fodij az, hogy mindenki megcsillogtathatja a kepessegeit, es megmutathatja nekunk, hogy o bizony a legjobb es tud valamit, amit mi nem
Tehat gyakorlatilag semmi, a lenyeg, hogy agytreningezunk.
A feladat a kovetkezo: primszam kiszamitasa elore elkeszitett kodminta alapjan. A cel az, hogy a meglevo kodot ugy alakitsuk at ASM betetek nelkul es az eredeti szovegeket es funkcionalitast megtartva, hogy a kod a leheto leggyorsabban fusson le. Eredetileg egy szalra van tervezve, de profi programozok vihetnek bele tobbszalu programozast is (peldaul megfelezik a szamtartomanyt, es ket szalon megy a vizsgalat egyszerre). A programnak egyetlen fizikai gepen kell tudnia futni (halozatban szamitas most nem cel). Tovabba a minel kisebb .exe meret is cel, a gyorsasagon felul erre is lehet figyelni (de nem kotelezo). A hibakezelesen lehet modositani, de az eredeti formatum boven megteszi. Tehat a lenyeg a minel optimalizaltabb kod, az eredeti funkciok megtartasa mellett. A leggyorsabb kod a nyertes (azonos hardveren tesztelve), azonos sebessegek mellett a tomorebb kod nyer!
(A teszteles egy fizikailag ketmagu processzoron lesz tesztelve 2 GHz-en.)
Akkor lassuk hat vegre az eredeti forraskodot:
using System;
namespace TestCon
{
class Program
{
static void Main(string[] args)
{
try
{
startApp();
}
catch (FormatException e)
{
Console.WriteLine("\n\nPozitiv egesz szamokat lehet csak megadni.");
endApp();
}
catch (Exception e)
{
Console.WriteLine("\n\nHiba tortent.");
endApp();
}
}
private static void endApp()
{
Console.WriteLine("\n\nA kilepeshez nyomjon le egy billentyut!");
Console.ReadKey();
}
private static void startApp()
{
Int64 szam;
Console.Write("Primszamvizsgalat. Kerem a vizsgalando szamot: ");
szam = Int64.Parse(Console.ReadLine());
if (szam > 1)
{
Console.WriteLine("\nPrimszamitas folyamatban...\n");
if (isPrimeWithCount(szam))
Console.WriteLine("Primszam.");
else
Console.WriteLine("Nem primszam.");
}
else
{
Console.WriteLine("\n\nA vizsgalatot csak egynel nagyobb pozitiv egesz szamokra lehet elvegezni!");
}
endApp();
}
private static bool isPrimeWithCount(Int64 szam)
{
bool val = true;
int counter = 0;
Console.Write("\nOsztoi: ");
for (Int64 i = 2; i < szam; i++)
{
if (szam % i == 0)
{
val = false;
counter++;
Console.Write("{0} ", i);
}
}
if (counter == 0)
Console.Write("nincs\n\n");
else
Console.Write("\n\n{0} osztoja van. ", counter);
return val;
}
}
} -
yash
senior tag
válasz
Syncmaster #867 üzenetére
En magam csinaltam neked egy kis peldat... kis logikvala ra lehet jonni mindenre, amugy eletem elso meghajtokat kezelo programja, Help file nelkul rajottem siman, sajat logikaval, szoval ha hasznalod az agyad, azert annyira nem nehez am! (mod: az Osztaly neve utal ra, hogy eppen masnak akartam neki allni
, eppen most tanulom a nyelvet csak
)
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace AutomaticProperties
{
class Program
{
static void Entrance()
{
for (int i = 0; i < DriveInfo.GetDrives().Length; i++)
{
if (DriveInfo.GetDrives()[i].IsReady)
{
Console.WriteLine("Drive: {0} Volume label: {1}", DriveInfo.GetDrives()[i], DriveInfo.GetDrives()
[i].VolumeLabel);
}
else
{
Console.WriteLine("Drive {0} is not ready an can not be read!",DriveInfo.GetDrives()[i]);
}
}
Console.ReadLine();
}
static void Main(string[] args)
{
try
{
Entrance();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
}
} -
Syncmaster
csendes tag
hi.. egy olyan problémám lenne.. 2 monitorom van.. másodlagos monitorra kivetítettem egy formot.. a formon van egy webbrowser és azt szeretném megvalósítani hogy gombnyomásra ide akarom kivetiteni azt amit én a form1 webbrowserjébe látok.. mindent publickáltam mindent elérek probáltam elég sokmindent.. volt h kiirta kevés a memória.. de megjelnni sose jelent meg.. köszi a válaszotokat előre is..
-
Lortech
addikt
válasz
Syncmaster #865 üzenetére
System.IO.Directory.GetLogicalDrives(); metódussal megkapod a logikai meghajtók neveit, a kapott string tömböt végigiterálod és hozzáadod a comboboxhoz.
-
Syncmaster
csendes tag
sziasztok egy olyan kérdésem lenne, hogyan lehet megvalósitani azt.. hogy egy comboboxba megjelenítsem a meghajtokat?
Mint pl a totalcommanderbe:
[link] -
Lortech
addikt
Kiemelten tanították a fősuli keretében a .NET-et, és rengeteget programoztam .NET-ben a kötelezők mellett is, de konlkrétan a vizsgára saját felkészülés volt kizárólag. Megfelelő .NET-es alapokkal fel lehet tisztességesen készülni magadtól is. Könyvek jók a vizsgára, CD melléklet annyira nem érdekes, emlékeim szerint azok a kérdések vannak rajta, amik a fejezetek végén már egyébként is ott vannak, meg ezek a kérdések egyébként is lényegesen könnyebbek, egyszerűbbek a vizsgakérdéseknél.
-
Benmartin
senior tag
válasz
babyanigirl #852 üzenetére
szerintem nem kellene minden topikban feltenned a kérdést, kezd egy kicsit erőszakosnak tűnni. ráadásul itt sokkal elnézőbbek újoncokkal, nem úgy mint a prog.hu-n (ahol látom el is utasítottak).
-
Értem köszi a választ!
Még a felkészülésről kérdeznék kicsit ha szabad.
Magad tanultál vagy részt vettél valami iylen méregdrága Számalk vagy netakadémia tanfolyamon?
Ami beszámolókat olvastam neten az derült ki hogy simán fel lehet készülni ilyensmi kurzusok nélkül is.
Egyelőre megvan pdf-ben a könyv az 536-hoz azt nézegetem aztán ha lesz pénzem majd megveszem mindenképp mert úgy mégiscsak jobb meghát gondolom azért a hozzá járó CD se hátrány ha megvan.Egyébéknt én is igy gondolkozom hogy megéri diploma mellé beszerezni valami iylesmi papírt mert ezzel nagyobb esélyed lehet. Van hogy még a diplománál is többet ér egy-egy ilyen.
-
Lortech
addikt
Előny minden papír pályakezdőknél, mert átlag végzett emberkék nem nagyon tudnak mit felmutatni a diplomájukon kívül, és ezzel esélyesebb megcsípni egy jobb helyet, előrébb kerülhetsz a sorban. Én java fejlesztőként dolgozom most, úgyhogy végül nem sok hasznát vettem magának a képesítésnek, de amíg felkészültem a vizsgára, sok újat tanultam, és jobban megmaradtak a dolgok.
-
én xp-n használom csak a 2008-at bár itthon elég jó is. mondjuk lehetne gyorsabb is de a célnak egyelőre megfelel.
meg most jobban viszagondolva a suliban még csak 2005 van sryCsak azért kérdeztem a vizsgákat mert gonodlkozom valami ilyesmin azt mondják megéri tanluni rá mert elég sokat ér.
Aztán gondoltam megkérdek vki olyat akinek már van hogy neki mi a véleménye ezekről a vizsgákról. Inkább arra lennék kíváncsi ohgy munkakeresésnél menniyre jó pont az ilyen vizsga.
Azt vágom hogy nehéz megcsinálni őket azt már olvastam elég sok helyen viszont azt is hogy nincs sok ember akinek MCTS képesítéssel rendelkezik ami elég nagy előny lehet. -
remek program nem fogsz benne csalódni!
a gyengébb közepes gépeket úgy megeszi hogy öröm nézniaz egyetemen kockázatos vállalkozás pl egy helpet lehívni mert könnyen vége szakadhat a fejlesztések
de azért karaj cucc.Bár van másik topic is erre de azért megkérdem itt mert ide is tartozik félig:
Van egy vkinek ilyen MS-es MCP vizsgája?
70-536,70-526 vagy talán 70-505 érdekelne. -
Lortech
addikt
válasz
babyanigirl #852 üzenetére
Ez itt egy C kód, nem C#, tulajdonképpen miben is kéne írni?
-
babyanigirl
csendes tag
válasz
Gregorius #849 üzenetére
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------#pragma argsused
int main(int argc, char* argv[])
{
FILE *fp=fopen("olvas.txt","r+" );
FILE *f=fopen("ir.txt", "w");
int szam;
char ch,kar;printf("Az eredeti szoveg: ");
while (!feof(fp)){
ch=fgetc(fp);
printf("%c", ch);
}
printf("\nBetuszamolas vegrehajtasa: i=igen n=nem: ");
scanf("%c",&szam);if (szam==105) {
fp=fopen("olvas.txt","r+" );}
}printf("\n") ;
system("pause");
fclose(fp);
fclose(f);
return 0;sajnos csak eddig jutottam bekérem a szöveget kiíratom, de hogy utána az" if "után mit kéne írni azt nem tudom, mondjuk gondoltam vmi "sizeof" tömbös karakter számlálásra de vhogy az sem jött össze, mert nem tudtam tömbbe rakni. Látszik, sajnos nagyon amatőr vagyok benne.
-
Gregorius
őstag
Felteszem a VS 2008 SP1-et már telepítetted. Ha nem, pótold.
Az alapok:
1. Végy egy projektet
2. Adj hozzá egy új elemet: LINQ to SQL Classes. (Az ADO.NET Entity Data Model is hasonló célú, de a LINQ to SQL könnyebb és gyorsabb egyszerű adatbáziskezelésre, bár van benne néhány kellemetlenség, amit egyre fárasztóbb körbelőni, ahogy bonyolódik az alkalmazásod.) Ne felejts el nevet adni a fájlnak, legyen mondjuk EShop.dbml.
3. Kapsz egy üres felületet. Tanács szerint nyisd meg a Server Explorert, ha itt nem látod az adatbázisod, akkor fent ott van a "Connect to Database" gombóc, azzal hozzá kell adni. Majd ugyanebben az ablakban maradva kiválogatod, hogy az adatbázisokból mivel akarsz foglalkozni és egyszerűen ráhúzod az üres felületre. Mentés, bezárás.És ennyi, az infrastruktúra egyik fele készen van. A következő módon tudsz pl. egy tábla tartalmából listát csinálni:
List<Customers> customers;
using( var db = new EShopDataClasses() )
{
customers = db.Customers.ToList();
}A WPF oldal egy kicsit gáz, ugyanis habár a WPF-nek ezerszer jobb (lesz) az adatkötése (mihelyst rendes designer támogatás is lesz hozzá), utolsó értesüléseim szerint a WPF még nem rendelkezik olyan szofisztikált griddel, mint a WinForms. (A CodePlexen már van valami előzetes változat, amibe csak beledobod az adatot és mindent elintéz, de még nem az igazi) Úgyhogy inkább dolgozzunk azzal, amink van és csináljunk egy egyszerű megjelenített listát, amiben még csak lépkedni sem lehet kurzorral.
Ha WPF appot hoztál létre, akkor elvileg már van egy Window1.xaml-ed, használjuk ezt. Fejléc is kell, úgyhogy egy StackPanelben egymás alá rakjuk a fejlécet és egy ItemsControlt, ami a lista elemeit jeleníti meg. (Haladóknak van HeaderedItemsControl, de ott stílusokkal is kell vacakolni.) Kissé fapados és kézihajtányos, de erre a célra most jó lesz.
Lévén szeretnénk ha a fejléc és a tartalom nem csúszna el egymástól, mindkét helyen egy gridet fogunk használni közös méretezéssel. Az egyszerűség kedvéért most csak két oszlopot csinálok meg. A fejléc grid így néz ki:<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Customer ID" />
<TextBlock Grid.Column="1" Text="Company name" />
</Grid>A tartalomsablon szinte azonos vele:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding CustomerID}" />
<TextBlock Grid.Column="1" Text="{Binding CompanyName}" />
</Grid>Ahol a Binding mondja meg, hogy oda majd a CustomerID illetve a CompanyName mező kerül. A fix méretezés kicsit gáz, rá lehet venni a grideket, hogy együtt méreteződjenek, de az már a haladó kurzus része.
Az egész összeépítve:<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Customer ID" />
<TextBlock Grid.Column="1" Text="Company name" />
</Grid>
<ItemsControl Name="DataList" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding CustomerID}" />
<TextBlock Grid.Column="1" Text="{Binding CompanyName}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>Itt két dolog van, amit még nem érintettem: az ItemsControlon a Name teszi lehetővé, hogy kódból hivatkozzunk rá, továbbá még meg kell adni az ItemsControlnak, hogy az elemeit honnan vegye. Ez legyen egyszerűen {Binding}, akkor a saját DataContext-jéből veszi az elemeket, azt pedig kódból máris beállítjuk a főablak Loaded eseménykezelőjében, itt ér össze a WPF és a fentebb lekért adat:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
using( var db = new EShopDataContext() )
{
this.DataList.DataContext = db.Customers.Take(10).ToList();
}
}És már készen is vagyunk, el lehet indítani, lehet csodálkozni vagy borzonkodni a gagyi adatlistánkon. Hogy ne hányja tele a képernyőt csak az első 10 rekordot kéri le a fenti kód. Ha az összes kell, egyszerűen töröld ki a Take(10)-et, viszont akkor úgy kell módosítani a layoutot is, hogy működjön a scrollozás.
Ha esetleg komolyabb adatkezelő projektbe fogsz, akkor a WPF-et a helyedben inkább hanyagolnám és maradnék WinForms alatt, ott használható az ArchElf által emlegetett DataGridView is, azt meg úgy szabhatod testre, ahogy tetszik.
-
Gregorius
őstag
válasz
babyanigirl #847 üzenetére
És meddig jutottál?
-
Gregorius
őstag
A dolog ennél sajnos súlyosabb. WPF-ben nincs olyan, hogy DataGridView, de még a szimpla DataGrid is csak készül (Silverlightban már van). Az adatkötés is teljesen máshogy működik.
Yash:
Én a helyedben inkább a LINQ-kel barátkoznék, mert habár a mögöttes tartalom sokkal bonyolultabb, az alapozás és az egyszerű feladatok jóval könnyebbek, mint a DataSeteknél. -
babyanigirl
csendes tag
Én fél éve tanulok progrmaozást és most kaptam egy olyan házit amit nem nagyon tudok megoldani, és hát szeretnék tőletek egy kis segítséget kérni abban hogy hogy is kezdjem el és hogy kellene megcsinálnom a feladatomat! Bármilyen ötletet, segítséget szívesen fogadok!
Feladat: Írjon programot ami meghatározza egy szöveges állományban szereplő betűk gyakoriságát! Az eredményt írja ki az OUT.txt nevű állományba!
Előre is köszi minden segítséget!
BabyAniGirl -
ArchElf
addikt
VS.NET 2008-at nem ismerem, de 2005-ben a DataGridView vezérlőt kell használni.
Ehhez kell még egy DataSet komponens is (de a használt varázsló legyártja majd neked). Ha felrakod a formra a DataGridView-t onnan varázslók segítségével már beállítható a megjelenítendő tábla:
DataGridView Tasks -> Choose Data source -> Add Data Source -> Database
Innen már szerintem elég egyértelmű. Kiválasztod az adatbázis szervert és az adatbázist (vagy megírod a connection string-et), kiválasztod a táblát és a megjelenítendő vezérlőket.
A DataGridView-n beállítod, hogy látszódjanak a mezők a fejlécek, az átrendezhetőség, a dokkolás a tartalmazó konténeren, stb.AE
-
yash
senior tag
Tudom, hogy ez egy gagyi kerdes lesz profik szamar, de hat en nem vok az
Szoval, a kerdes: van egy adatbazisom, legyen a neve eshop. eshop-ban van tabla, neve: customers. van benne minden jo, gondolom ki lehet talalni, hogy micsodak.
Feladat: jelenitsuk meg egy WPF formon a tablat (lehet mondjuk egy akarmilyen vezerlo, csak szep legyen, allithato oszlopszelessegek meg ilyesmik), az elso sor mutassa a headert, utana meg johetnek sorokban a rekordok.
Hogy csinaljam? Foleg az a resze erdekelne, ahol hozzakapcsolodok a szerverhez es lekerdezem (még sosem csinaltam ilyet, ezert elnezest kerek!). Egyelore mellozzuk a LINQ-t, ha lehet, ott plane nem tartok
Koszonom elore is, aki tud segiteni es nem farasztottam nagyon le
-
válasz
CsodaPOK #842 üzenetére
hali!
pl valahogy igy lehetne szerintem:
button click eseményében elindítod mondjuk a BackgroundWorkert.
beckroundworker.RunWorkerAsync();aztán a bacgroungworker DoWork eseményében:
csinálsz valamit bármit amit akarsz a lnéyeg a bacgrundworker ReportProgress metódusa.
pl ha egy ciklusban vagy meghívod bacgroundworker.ReportProgress(i+1) tehát mindig növeled egyel.azért fontos a ReportProgress mert ez váltja ki a ProgressChanged eseményt.
ez a folyamat állapotát kapja %-os formában.
a ProgressChanged eseménybe teszel egy ilyet pl: ++progressBar.Value;A RunWorkerCompleted esemény pedig akkor következik be ha kész a backgroundworkered.
Tehát ide beteszel valami kódot ami akkor következik ha kész az munka.remélem nagyjából érthető igy nagyon bő magyarázat nélkül is de ha valami van szólj megpróbálok segíteni. nem mondom hogy fogok is tudni segíteni mert én csak kezdő vagyok de megpróbálok
-
CsodaPOK
senior tag
Sziasztok!
Van egy BackgroundWorker, aminek a DoWorkjében létrehozok egy új szálat, amin elindítok egy programot.
Hogy lehet azt tudni, hogy az új szálon futó program mikor véget ért-e?
Tehát pl van egy form, amin van egy progressbar. Progressbar addig menjen, amíg fut az új szálon a program.Köszi szépen.
CsodaPOK.
-
Orb1337
tag
Felraktam a VS2008-at ezzel most tökéletesen működik
-
szóval létrehoztál egy form1-et mondjuk és létrehoztál egy form2-őt.
a form2-őt nem tudod pédányosítani mert vmiért nem látja a rendszer.nem lehet hogy amelyik formról nyitni akaro az ámsik névtérben van és ezért nem látja?
bár az alap projekten belül mindegyik formot ugyanoda teszi ha jól emlékszem.nem tudnál egy kicsit bővebben írni arról hogy hogyan akarod felhívni a form2 példányát? vagy arról hogy hogyan írtad meg a form2-őt.
-
Orb1337
tag
megnéztem ezt a hibát dobja:
Error 2 The type or namespace name 'form2' could not be found (are you missing a using directive or an assembly reference?) C:\ORB\Suli\progi2\11.1\11.1\Form1.cs 20 29 11.1 -
Orb1337
tag
Üdv,
a problémám a következő:
Visual Studio 05-ben többformos alkalmazást kellene készítenem.
Formakarmi változónév = new formakarmi();
Amikor a formnevet szeretném beírni, akkor nem jelenik meg a listában a többi létrehozott form.
Mi lehet a hiba? -
hali!
sajnos nagyon időm nincs meg nemis értek hozzá de hátha kicsit segít.
Szóval én úgy gondolkozom hogy végülis valahogy ketté kell szedned a stringet és az egyes elemeket összehasonlítanod.
Mivel a string lehet egy olyan palindrom is ami egy mondat ezért a szóközöket meg felkiáltójeleket meg ilyesmiekt ki kell szedni belőle.
Ezt mondjuk egy for ciklussal megcsinálod. Vagy lehet hogy van valami string függvény direkt erre azt nem tudom. De ha végigmész rajta és kiszedegeted azzal se lehet baj. A string lenght tulajdonságát használhatod is.
Aztán miután ez megvan mondjuk tolower-el kisbetüssé teszed őket. Mondjuk azt nem tudom hogy ez feltétlen szükséges e de emlékeim szerint igen mivel pl egy A nem egyezik összehasonlításkor egy a-val. Nemtom hogy az AsCII kódot hasonlítja e.
Aztán mondjuk megteheted azt is hogy még a for ciklusban az ékezetes betük heléyre ékezet nélkülit raksz vagy eleve már csak angol abc szerinti betüket fogadsz el (bár akkor lehetne ár eleve kisbetüs csak) ez azért lehet lényeges mert lehetséges hogy a szó palindrom de ezeknél néha az ékezetes betüket nem szokták figyelembe venni. Vagy vmi iylesmit írt a wikipédia. No mind1 ez már csak egy ksi plussz.
No és a string lenght tulajdonságával megtudod miylen hossztú a string. Kétfelé veszed. Mondjuk két külön stringbe teszed a két felét. És elkezded hasonlítani talán egy for ciklusban az elmeket. Legelébb az első fél első elemét a második fél utolsó elemével.
Ha mindezt pl egy függvényben írod meg az visszaadhat boolean értéket és true-t ha mindegyik egyezik false-t ha vmelyik nem.
Hát bár megoldást nme adtam remélem kicsit segített. -
Relisys
senior tag
Hello!
Lenne egy-két Console Application amit nem tudok megcsinálni. Tudna valaki segíteni?
Például: Olvasson be egy stringet, majd vizsgálja meg hogy palindrom-e!
Remélem tudtok segiteni. Köszi -
Sanyix
őstag
.net-es program, indítás:
"System.Security.SecurityException: Request for the permission of type 'System.Net.SocketPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
at System.Security.CodeAccessPermission.Demand()
at System.Net.Sockets.Socket.Bind(EndPoint localEP)"Azt mondja hogy nincsenek meg a jogosultságok, és hogy a .net configuration tool-al lehet adni.
1. ez net 2.0-ás program, és a 2.0 nem rakott fel ilyen toolt
2. Mióta kell ennek jogosultság? Eddig csak felraktam, és mentek a programok.Mit kell ezzel csinálni hogy menjenek?
-
DzsedalY
tag
sziasztok!
arról szeretnék érdeklődni, hogy véletlenül nincs-e valakinek c# alatti excel kezelésről egy jó doksija? konkrétan létező excel táblából adatok kinyerése, azokkal számolás érdekelne
-
dferee
tag
Köszönöm a segítséget mindenkinek!
-
ArchElf
addikt
Negatívum:
- dotNet
- dagályos kód (a legyártott)
- könnyű nehezen észrevehető (logikai) hibákat gyártani bennePozitívum:
- dotNet
- feljett fejlesztőkörnyezet (még valami wswyg szerű szerkesztője is van)
- moduláris felépítésEgy egyszerűbb oldalra talán jobb a php, de egy portált azért nem programoznék le notepad++ -ban.
AE
-
dferee
tag
Sziasztok!
Valószínűleg amatőr kérdés lesz de azért felteszem
Fel tudnátok nekem sorolni 3 negatívumot és 3 pozitívumot, hogy miért nem érdemes / érdemes weboldalt c#-ban megírni?
Előre is köszi a segítséget!
-
Gregorius
őstag
Kérdés, hogy mennyire bonyolult excelt akarsz generálni. Ha elég egy sima, képletmentes, pucér táblázat, akkor a Microsoft.Jet.OLEDB.4.0 providerrel simán tudsz ilyet csinálni.
Kockázatok és mellékhatások: csak 32 bites programmal működik (vagyis explicit x86-ra kell fordítani, hogy x64-es rendszeren is x86 módban induljon el), ugyanis MDAC-ból nincs 64 bites. -
Syrano
tag
Sziasztok,
érdeklődnék, hogy van-e itt esetleg valaki aki próbált már C#-ban írt programmal Excel fájl-t generálni, úgy hogy az adott gépen nincs telepítve az Office.
Sajnos nekem nem sikerült, megpróbáltam úgy is, hogy belefordítom a szükséges dll-eket a programba, de így se ment a dolog.
A program szépen megcsinálja amit kell egy olyan gépen amin telepítve van az Office, de egy olyanon amin nincs ott elfekszik az
Excel.Application myExcel;
myExcel = new Excel.Application();utasításnál és a hibaüzenetnek is ennyit ad:
Retrieving the COM Class factory for component with CLSID {...} failed due to the following error: 80040154
Utánanéztem ennek is de semmi kézzel fogható megoldást nem találtam csak annyit hogy telepíteni kell az Office-t, tényleg csak ez a megoldás létezik?
Köszi
-
-
yash
senior tag
Feltelepítettem a Visual Studio Professional-t, utána rátelepítettem az SP1-et, és most az Upgrade funkcióban nem tudom beírni a kulcsomat...weblap nyílik meg helyette, régen beírhattam. Ötlet?
-
Lortech
addikt
Létezik, főiskolákon egyetemeken.
El kell végezni egy programozói szakot.
Papír arra jó általában, hogy egyáltalán behívjanak interjúzni, de aztán egyből kiderül, hogy ér-e valamit a papírod.
MCTS vizsgák vannak programozás / .NET témakörében, pl. 070-536 a .NET 2.0 alapvizsga, aztán vannak modulok, pl. windows forms, web-, elosztott alkalmazások, amik az előzővel együtt MCTS képesítést adnak.
Ezen vizsgák elvégzése nem a programozói kvalitásodat vizsgálja, mert azt alapnak tekinti, nincsenek hagyományos programozással kapcsolatos kérdések, hanem az adott .NET frameworkos részekben szerzett tudásodat, tapasztalataidat vizsgálja.A hivatalos tananyagos könyv 900 oldal körül van egy-egy modulhoz, és sokminden nincs is benne, mert igen specifikus kérdések is lehetnek. Viszonylag nehezek egyébként, vágni kell a témát, és elég pontosan, nem csak kb.
-
DarkByte
addikt
Húha, tök jó hogy van ilyen topik is; eltettem kedvencnek.
yash: Én úgy tudom hogy MPC vizsgák vannak, de hogy ezek pontosan hogyan és mint épülnek egymásra és mik a követelményeik azt én sem tudom; engem is érdekelnek az ezzel kapcsolatos tapasztalatok. -
yash
senior tag
Létezik ilyen, hogy prrogramozói vizsga? Úgy értem, ha papírt akarok arról, hogy tudok programozni, mit kell tennem? Milyen MS-os vizsgákat ajánlatok? Van itt vkinek ilyenje? Nehezek?
Egy vagy több modulból épül fel egy vmire is használható CV-elem?
-
ArchElf
addikt
-
yash
senior tag
Nah, ez már jobban tetszik
Ebből meg fogom érteni asszem.. egy kérdés: miért kellenek a DLL-ek??? Úgy értem, ez a feladat tökre hasonlit a virtual-override tipusu metódusokra... alig látok különbséget az, és az interfész tipusú használatok között... mi a különbség amit nem veszek észre?? Ez miért jobb?
-
ArchElf
addikt
Kicsit magyarabbul
A meghívó osztály:class Gyümölcsszedő
{
static void Main(string[] args)
{
Console.WriteLine(Leszed("Alma.dll"));
Console.WriteLine(Leszed("Körte.dll"));
Console.WriteLine(Leszed("Cseresznye.dll"));
Console.WriteLine(Leszed("Dió.dll"));
}
static string Leszed(string GyümölcsFa)
{
try
{
Assembly asm = Assembly.LoadFrom(GyümölcsFa);
IGyümölcs gyümölcs = (IGyümölcs)asm.CreateInstance(asm.GetTypes()[0].FullName);
return gyümölcs.Megkóstol();
}
catch
{
return string.Format("A [{0}] nem létező gyümölcsfa!", GyümölcsFa);
}
}Az Interfész:
public interface IGyümölcs
{
string Megkóstol();
}A dinamikusan linkelt dll-ek:
Alma.dllpublic class Cseresznye : IGyümölcs
{
public string Megkóstol()
{
return "A Cseresznye kukacos volt... :(";
}
}Körte.dll
public class Körte : IGyümölcs
{
public string Megkóstol()
{
return "A Körte éretlen volt... :(";
}
}Cseresznye.dll
public class Cseresznye : IGyümölcs
{
public string Megkóstol()
{
return "A Cseresznye kukacos volt... :(";
}
}A kimenet:
C:\temp\Developer\Gyümölcsszedő\Gyümölcsszedő\bin\Release>Példaprogram.exe
Az Alma finom érett volt! :)
A Körte éretlen volt... :(
A Cseresznye kukacos volt... :(
A [Dió.dll] nem létező gyümölcsfa!AE
-
yash
senior tag
Sajnos nem értem még mindig, akkora homály, hogy szinte már fekete lyuk
REfelction-nál még nem is járok, ez szintén fekete lyuk. Ez a példa meg túl bonyolult számomra, mivel nem értek belőle semmit...
nem lehetne egy olyan kérésem, hogy irsz vmi egyszerü kis magyar nyelvű kódrészletet ALMA, KORTE, GYUMOLCSFA tipusu nevekkel? hatha ugy megertem. esetleg, ha ugy gondolod, hogy metakód-dal jobban elmagyarázható, azt is megköszönném!
-
ArchElf
addikt
Egy példa a lentire(kicsit meg lett vágva). Az példa egy dinamikusan betölthető adatszolgáltató interfésze + betöltő osztálya. Természetesen az adatszolgáltatókat külön meg kell(ett) írni hozzá
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
namespace MonitorUser.Connector
{
public static class ConnectorLoader
{
/// <summary>
/// Collection of all loaded IConnector objects
/// </summary>
public static List<IConnector> Connectors = new List<IConnector>();
/// <summary>
/// Initialize a new IConnector instance and start it
/// </summary>
/// <param name="location">IConnector dll location</param>
/// <param name="name">IConnector full class name</param>
/// <param name="connectionString">Connection string for starting the connector</param>
/// <param name="initData">Additional initialization data</param>
/// <returns>Initialized and started IConnector instance</returns>
public static IConnector Load(string location, string name, string connectionString, ConnectorInitData initData)
{
try
{
IConnector ic = null;
Assembly asm = Assembly.LoadFrom(location);
Type tp = asm.GetType(name);
object p = Activator.CreateInstance(tp);
ic = (IConnector)p;
ic.Connect(connectionString, initData);
Connectors.Add(ic);
return ic;
}
catch
{
throw;
}
}
}
public interface IConnector
{
event EventHandler NewItem;
bool Connect(string connectionString, ConnectorInitData initData);
bool Disconnect();
bool Check();
bool Check(params string[] indexer);
ConnectorData GetNextItem();
bool SetItem(ConnectorData item);
bool SetItem(string referrer);
}
public struct ConnectorInitData
{
public long Position;
public DateTime StartTime;
public string QueryString;
public ConnectorInitData(long Position, DateTime StartTime, string QueryString)
{
this.Position = Position;
this.StartTime = StartTime;
this.QueryString = QueryString;
}
}
public struct ConnectorData
{
public long Identifier;
public List<string> Headers;
public List<Type> Types;
public List<object> Values;
public ConnectorData(long id, List<string> headers, List<Type> types, List<object> values)
{
this.Identifier = id;
this.Headers = headers;
this.Types = types;
this.Values = values;
}
}
} -
ArchElf
addikt
Másrészt kifejezetten jók az interfészek Reflection típusú példányosításra:
Első értelmes Google találatAE
Ú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!
- A Panasonic Toughbook CF-54 i5-5300u i5-6300u TN, IPS touch Budapest, MPL Foxpost
- Eladó Apple iPhone Xr 64GB fekete / ÚJ KIJELZŐ / 100% AKKU / 12 hónap jótállással!
- Azonnali készpénzes félkonfig / félgép felvásárlás személyesen / csomagküldéssel korrekt áron
- BESZÁMÍTÁS! Gigabyte B760M i5 14600KF 32GB DDR4 1TB SSD RX 6700XT 12GB Zalman Z1 Plus Seasonic 650W
- Bomba ár! Lenovo ThinkPad X395 - AMD Ryzen PRO 5 I 8GB I 512GB SSD I 13,3" FHD I Cam I W11 I Gari!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest