- Samsung Galaxy Watch6 Classic - tekerd!
- Szívós, szép és kitartó az új OnePlus óra
- Telekom mobilszolgáltatások
- Samsung Galaxy A54 - türelemjáték
- Megjelent a Poco F7, eurós ára is van már
- Samsung Galaxy S23 Ultra - non plus ultra
- Xiaomi 15 Ultra - kamera, telefon
- Milyen mobilnetet vegyek?
- Google Pixel topik
- Okosóra és okoskiegészítő topik
Új hozzászólás Aktív témák
-
ArchElf
addikt
A menünél a "-" -ak mentü felépítését jelentik (- menü, -- almenü), a név a menü objektum neve (át kell írni a Properties ablakban). Az OnClick-t a rákattintással automatikusan legenerálja, a Paint eseményt pedig a Properties ablak (jobb lent) Events (villám ikon) fülén találod.
AE
-
ArchElf
addikt
Szövegbevitel TextBox-ból. Szöveg konvertálása számmá pl int.Parse(), Convert.ToInt32() függvényekkel.
Doboz keret+kitöltés:Rectangle r = new Rectangle(10, 10, 100, 100);
Color c1 = Color.Red;
Color c2 = Color.Orange;
g.DrawRectangle(new Pen(new SolidBrush(c1)), r);
g.FillRectangle(new SolidBrush(c2), r);AE
-
ArchElf
addikt
Gondolom a form+menü+picturebox összekattogtatásával nincs gond.
form: Form1
picturebox: pictureBox1
menü:
-mShape
--mCircle
--mBox
-mColor
--mRed (Checked = true)
--mOrange
--mGreen
Rajozás a System.Drawing csoport alatt levő függvényekkel lehet:
Kell hozzá először egy Graphics objektum, erre lehet rajzolni a saját metódusaival:
(Paint esemény alá a legegyszerűbb)private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
//Graphics objektum "felkapása"
Graphics g = e.Graphics;
//felület törlése (gomb színnel)
g.Clear(SystemColors.ButtonFace);
//szín kiválasztása a bejelölt nyomógomb alapján
Color c = SystemColors.ButtonFace;
if (mRed.Checked)
c = Color.Red;
else if (mOrange.Checked)
c = Color.Orange;
else if (mGreen.Checked)
c = Color.Green;
//forma rajzolása a bejelölt nyomógomb alapján
if (mCircle.Checked)
{
g.FillEllipse(new SolidBrush(c), new Rectangle(10, 10, 100, 100));
}
else if (mBox.Checked)
{
g.FillRectangle(new SolidBrush(c), new Rectangle(10, 10, 100, 100));
}
}
//nyomógombok bejelölésének eseményei
private void mCircle_Click(object sender, EventArgs e)
{
mCircle.Checked = true;
mBox.Checked = false;
pictureBox1.Refresh();
}
private void mBox_Click(object sender, EventArgs e)
{
mBox.Checked = true;
mCircle.Checked = false;
pictureBox1.Refresh();
}
private void mOrange_Click(object sender, EventArgs e)
{
mOrange.Checked = true;
mRed.Checked = false;
mGreen.Checked = false;
pictureBox1.Refresh();
}
private void mGreen_Click(object sender, EventArgs e)
{
mGreen.Checked = true;
mOrange.Checked = false;
mRed.Checked = false;
pictureBox1.Refresh();
}
private void mRed_Click(object sender, EventArgs e)
{
mRed.Checked = true;
mGreen.Checked = false;
mOrange.Checked = false;
pictureBox1.Refresh();
}AE
-
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
-
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
-
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
-
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
-
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
-
ArchElf
addikt
-
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
-
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
-
ArchElf
addikt
Főleg akkor látod a hasznát, amikor egy viszonylag kiterjedt objektum öröklési fád van, és egy-egy függvénynek a fában levő osztályok (mármint a példányosított osztályok) közül csak bizonyos tulajdonságokkal rendelkezőket kell feldolgozniuk.
Mivel egy osztály több interfészt is örökölhet, így az interfészek kifejezetten alkalmasak az osztály alapvető feladatain kivül álló működés definiálására.
Huhh... átolvasva nem tűnik túl érthetőnek, de remélem átmegy belőle valami...AE
-
ArchElf
addikt
Ebben igazad van: persze, hogy gányolás, amit írtam.
Amúgy én azon mosolyogtam ezerrel az egyetemen (levelező), hogy míg a "leggyorsabb" könyv címe is úgy szól, hogyan tanuljunk meg xyz-ben programozni 24 óra alatt, addig az egyetemen félévenként "megtanultuk" a C-t, C++-t, Java-t és PHP-t 20-20 óra alatt. Nem semmi teljesítmény.
AE -
ArchElf
addikt
TabControl.TabPages (TabPageCollection) property-n keresztül el tudod érni az összes tab-ot, ha erre voltál kiváncsi. Sajna a TabPage elemeket nem lehet "hagyományosan" eltüntetni (ui nincs Visible tulajdonsága). Ezeket csak úgy tudod fel-lerakni, ha elveszed-hozzáadod a tabodhoz. Legyegyszerűbb egy előre elkészített ás láthatatlan tabcontrol-ról fel-le pakolni a tabokat a látható de alapból üres tabcontrol-ra.
TabControl.SelectedTab property az aktív tab.
AE
-
ArchElf
addikt
Direkt írtam a sort-ot, mert három elemnél még nem szignifikáns a sebesség-különbség, amúgy meg kevesebb kód, mint egy foreach - minimum, maximum. Meg ugye alapban kevesebb változó is kell hozzá (persze meg lehet oldani egyetlen plusz változóval is).
Amúgy ha valaki nem születik bele a "sima" for-ba, a foreach általában könnyebben megérthető/használható... Tisztán támogatja azt a kezdeményezést, hogy buta (GUI) programozó minél kevesebb kódot írjon.
AE
-
ArchElf
addikt
Én saját tesztelő alkalmazást készítettem (mivel minden komponenst nekem kellett csinálni azokat amúgy is kellett tesztelni). Amúgy tesztelni illik:
- szintaktikailag (gondolom a programos lefordul)
- szemantikailag (olyan tesztadatokkal tölteni fel, aminek tudod az eredményét, és összehasonlítani a programeredményeivel)
- streszteszt (mi történik, ha a feldolgozási sebességnél nagyobb terheléssel tömöd programodat)
Amúgy a CodeProject-en olvastam (link) mostanában egy cikket a program-tesztelésről, nézz utána, ha még érdekes. Gondolom, nem gond, hogy angol.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!
- Easun iSolar SMW 11kW Twin Hibrid inverter // Dupla MPPT // BMS // WiFi
- GAMER PC : RYZEN 7 5700G/// 32 GB DDR4 /// RX 6700 XT 12 GB /// 512 GB NVME
- GAMER MSI LAPTOP : 15,6" 144 HZ /// i5 12450H /// 16GB DDR4/// RTX 4050 6GB/// 1TB NVME
- Manfrotto 055 magnézium fotó-videófej Q5 gyorskioldóval
- Sony ECM-W2BT
- Apple iPhone 13 Pro , 128GB , Kártyafüggetlen
- BESZÁMÍTÁS! MSI Z77 MPOWER Z77 chipset alaplap garanciával hibátlan működéssel
- Dell USB-C, Thunderbolt 3, TB3, TB4 dokkolók (K20A) WD19TB/ WD19TBS/ WD22TB4, (K16A) TB16/ TB18DC
- AKCIÓ! ASRock H310CM i3 9100F 8GB DDR4 240GB SSD 1TB HDD GTX 1060 3GB AeroCool Strike-X 500W
- AKCIÓ! HP ZBook Firefly 14 G9 üzleti notebook- i7 1255U 32GB RAM 512GB SSD nVidia T550 4GB Win11
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged