- Kiterjesztette az Egyesült Államok a kínai chipkorlátozásokat
- Milyen okostelefont vegyek?
- Android szakmai topik
- Apple Watch Sport - ez is csak egy okosóra
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Rohamosan nőnek az akkumulátorok
- Earfun UBOOM X - hanxóró
- Redmi Watch 4 - olcsó hús, sűrű a leve
- Samsung Galaxy Watch5 Pro - kerek, de nem tekerek
- Ezek a OnePlus 12 és 12R európai árai
Új hozzászólás Aktív témák
-
Speederer
senior tag
válasz kingabo #1948 üzenetére
Valami ilyesmit sikerült összehoznom:
public string atvalt(string honnan, int mit)
{
int mibe = 0;
TextBox[] tb = new TextBox[4];
tb[0] = textBox1;
tb[1] = textBox2;
tb[2] = textBox3;
tb[3] = textBox4;
if (honnan == "")
{
for (int i = 0; i < tb.Length; i++)
{
tb[i].Text = "0";
}
}
else
{
for (int i = 0; i < tb.Length; i++)
{
if (i == 0) { mibe = 10; }
else if (i == 1) { mibe = 2; }
else if (i == 2) { mibe = 8; }
else if (i == 3) { mibe = 16; }
tb[i].Text = Convert.ToString(Convert.ToInt32(honnan, mit), mibe);
}
}
return null;
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
atvalt((sender as TextBox).Text, 10);
}Így elég 1 sor minden textBox_KeyUp-hoz.
A tömb elemeit csak így felsorolással tudtam megadni, pedig valahogy így szerettem volna:
TextBox[] tb = new TextBox[textBox1, textBox2, textBox3, textBox4];Ez miért nem tetszik neki?
[ Szerkesztve ]
A rendrakás a kisemberek mániája. A zseni átlátja a káoszt!
-
fatal`
titán
-
Speederer
senior tag
-
kingabo
őstag
válasz Speederer #1952 üzenetére
Amit én mondtam az 8 sor, ha if nélkül írod meg akkor 4.
Az else ágban a for-ban a sok if helyett egy switch sokkal szebb lenne.
Talán a key down eseménynél meg tudod nézni, hogy melyik gombot nyomta le a véglény, ha ez pl bin-nál nem 0 vagy 1 akkor szólsz neki, hogy ejnye-bejnye.
-
[pod]Diablo
őstag
Hello!
Egy olyan problemam lenne hogy beallitottam egy gombnak az Image-et:
Majd irtam egy ilyen feltetelt:
A2.Image == sakk.Properties.Resources.feherparasztCsak ez így nem helyes,legalabbis nemtalalja igaznak a program.Hogy lenne helyes a feltetel?
Elore is koszonom a segitseget!
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
martonx
veterán
válasz [pod]Diablo #1956 üzenetére
A2. Image egy kép objektumot vár. Neked pedig a feherparaszt gondolom nem kép. A feherparasztból hozz létre egy image-et és azzal tedd egyenlővé A2-t.
Mondjuk ha legközelebb a hibaüzenetet is leírnád, azzal sokat segítenél.Én kérek elnézést!
-
Speederer
senior tag
válasz kingabo #1955 üzenetére
Akkor ki tudnád fejteni bővebben (kóddal) azt amire gondolsz? Bocs, csak még annyira nem vagyok otthon a témában, és ennyiből nem sikerült teljesen megértenem.
A switch tényleg szebb lenne, azt majd átírom.
Meg a key_down-ba is beleírom amit kell, de egyelőre elég volt maga a lényeg.A rendrakás a kisemberek mániája. A zseni átlátja a káoszt!
-
[pod]Diablo
őstag
válasz martonx #1957 üzenetére
Amikor Propertiesnel ramentem az image-re kidobott egy Select Resource ablakot ahol betudtam tallozni/importalni a kepet es ugy rakta be.Konkret hiba uzenetet nem dobott ki a program,csak nem csinalta meg amit kellet volna hogyha igaz a feltetel.
Most Igy megadtam a kepet a gombnak: A2.Image = Image.FromFile(@"C:\-school-\prog\sakk\feherparaszt.png",true);
es igy nez ki a feltetel:
if (A2.Image == Image.FromFile(@"C:\-school-\prog\sakk\feherparaszt.png",true))De igyse csinalja meg amit kene.
[ Szerkesztve ]
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
bpx
őstag
válasz Speederer #1943 üzenetére
látom már segítenek a többiek, de én kíváncsi voltam milyen rövidet tudok írni - legyen az akármilyen ronda is - úgyhogy itt egy elrettentő példa
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] bases = { 16, 10, 8, 2 };
List<TextBox> tb = new List<TextBox>();
private void Conv(object sender, KeyEventArgs e)
{
long l = Convert.ToInt64(((TextBox)sender).Text, bases[tb.IndexOf((TextBox)sender)]);
for (int i = 0; i < bases.Length; i++)
tb[i].Text = Convert.ToString(l, bases[i]);
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
if (c is TextBox) { c.KeyUp += Conv; tb.Add((TextBox)c); }
}
} -
martonx
veterán
-
[pod]Diablo
őstag
válasz martonx #1961 üzenetére
Lefut a program minden gond/hiba uzenet nelkul,csak nem hajtja vegre amit az if { } zarojelei koze irok be.Vagy mire gondolsz?
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
shev7
veterán
válasz [pod]Diablo #1962 üzenetére
nem vagyok nagy .net magus, de .netben nincs olyan mint a javaban, hogy mikor ket objektumot hasonlitasz ==-szal akkor igazandibol csak a pointeruket hasonlitja? Ha nem ugyan oda mutatnak, akkor hamisra ertekelodik ki.
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Gregorius
őstag
Object.ReferenceEquals. Olyan nyelvi elem, ami garantáltan ezt csinálja csak VB.NET-ben van (Is operátor). A ==-t felül lehet definiálni (ugyanúgy, mint a sima Object.Equals-t), bár igen komoly szabályok vannak, hogy milyen körülmények között szabad és ha ezt nem tartjuk be, a fél framework elkezd rosszul működni az osztályunkon.
[ Szerkesztve ]
-
Alkimista
csendes tag
Sziasztok!
A feladatom a következő:
Két meglévő VS6 VB-ben íródott alkalmazást kell összegyúrnom C#-ban. Az egyik SQL SERVER, a másik meg ORACLE adatbázist használ.
Tehát egy olyan alkalmazást kell írnom, mely SQL SERVER és ORACLE adatbázisokkal is működik, az hogy éppen melyikhez kell csatlakozni a loginkor dől el. A két adatbázis táblaszerkezete, objektumai megegyeznek.Az alkalmazás feladatai leegyszerűsítve:
- Az adatbázis adatainak megjelenítése (ez lenne a Presentation layer)
- Az adatbázisban lévő táblákra CREATE, READ, UPDATE, DELETE (DAL)
- Az adatbázisban lévő tárolt eljárások meghívása (DAL)A kérdésem az lenne, hogy létezik vmi framework, ami elrejti előlem a két adatbázis közti különbségeket, és pl. a tárolt eljárások paraméterezései, vagy a connection provider választást az adott adatbázisnak megfelelően végzi el, vagy ezt nekem kell leprogramoznom?
remélem érthető voltam, előre is köszönöm a segítséget
Alkimista
-
#90999040
törölt tag
válasz kingabo #1967 üzenetére
Útvonalat valóban nem, de 2 Image-t össze tud hasonlítani, hogy pontosan egyeznek-e.
Persze kivétel például a "this.BackgroundImage", mert ide amikor betölti, akkor az eredeti képből vagy levág, vagy többszörözi, hogy kitöltse a méretet. Így ez sosem fog megegyezni az eredeti képpel.
Egyébként minden további nélkül meg lehet nézni, hogy 2 Image teljesen azonos-e. -
#90999040
törölt tag
-
#90999040
törölt tag
válasz kingabo #1973 üzenetére
Az az igazság, hogy én is csak "Memóriafaló" megoldással tudtam megoldani.
bool Imageegyezike(Image kep1, Image kep2)
{
System.IO.MemoryStream ms1 = new System.IO.MemoryStream();
kep1.Save(ms1, System.Drawing.Imaging.ImageFormat.Png);
System.IO.MemoryStream ms2 = new System.IO.MemoryStream();
kep2.Save(ms2, System.Drawing.Imaging.ImageFormat.Png);
int i = 0;
int j = 0;
System.IO.BinaryReader br1 = new System.IO.BinaryReader(ms1);
System.IO.BinaryReader br2 = new System.IO.BinaryReader(ms2);
br1.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
br1.BaseStream.Seek(0, System.IO.SeekOrigin.Current);
br2.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
br2.BaseStream.Seek(0, System.IO.SeekOrigin.Current);
try
{
do
{
i = br1.ReadByte(); j = br2.ReadByte();
if (i != j) break;
} while (i != -1 && j != -1);
}
catch (System.IO.IOException exc)
{
}
br1.Close();
br2.Close();
if (i != j)
return false;
else
return true;
}
Mondjuk nagyobb méretű képeknél a MemoryStream helyett lehet FileStream. Lassab, de kevésbé memóriafaló. -
fatal`
titán
válasz kingabo #1973 üzenetére
Az nagyon lassú. Bár C#-ban nem próbálkoztam ilyennel, de delphiben azt lehetett csinálni, hogy mindkét képet betöltöttem egy MemoryStream-be és azoknak a tartalmát hasonlítottam össze (nem kell fájlba menteni).
A delphis kód így nézett ki:
function Osszehasonlit(B1, B2: TBitmap): Boolean;
var
S1, S2: TMemoryStream;
begin
S1 := TMemoryStream.Create;
S2 := TMemoryStream.Create;
try
B1.SaveToStream(S1);
B2.SaveToStream(S2);
Result := CompareMem(S1.Memory, S2.Memory, Max(S1.Size, S2.Size));
finally
S1.Free;
S2.Free;
end;
end;Gondolom van valami hasonló .NET-ben is. A ramot falja ez tény.
[ Szerkesztve ]
-
kingabo
őstag
Tehát nincs...
Igaz csak bitmap-re, de ennél gyorsabb módot nem ismerek: c-s tömbként megyünk végig a képen:
Bitmap Picture1 = new Bitmap(width, height);
BitmapData Picture1Data = Picture1.LockBits(
new System.Drawing.Rectangle(0, 0, Picture1.Width, Picture1.Height)
, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
int Remain1 = Picture1Data.Stride - Picture1Data.Width * 3;
byte* PtrP1 = (byte*)Picture1Data.Scan0;
for (int j = 0; j < height; ++j)
{
for (int i = 0; i < width; ++i)
{
PtrP1[2] = Layers[R, i, j];
PtrP1[1] = Layers[G, i, j];
PtrP1[0] = Layers[B, i, j];
PtrP1 += 3;
}
PtrP1 += Remain1;
}
}
Picture1.UnlockBits(Picture1Data);
Persze ehhez a projektben engedélyezni kell az unsafe használatát. A fenti kód egy 3 dimes tömböt pakol át a képbe. Hirtelen jobb pl-t nem találtam.(#1975) hunfatal: ez is bitről bitre hasonlít össze, szal ugyanott vagy.
[ Szerkesztve ]
-
#90999040
törölt tag
válasz kingabo #1976 üzenetére
ez is bitről bitre hasonlít össze, szal ugyanott vagy.
Viszont bármilyen formátumot képes kezelni(pl. [pod]Diablo programjában is .png van), nem csak bitmap-ot, és unsafe sem kell hozzá.
Valamint, ahogy írtam, Filestream-el lassabb, de kevésbé memfaló.
De a lényeg, hogy így vag úgy, de megoldható. -
kingabo
őstag
válasz #90999040 #1978 üzenetére
A bitmap által támogatott kép formátumok: [link]
Nem vagyok benne biztos, de ennek a módnak nem kell plusz memória terület, az eredeti képen garázdálkodik és baromi gyors. (6 rétegű műholdképeket kezeltünk így )
Szerintem a korábban említett enum-os megoldás ezek után az egyetlen járható út."De a lényeg, hogy így vagy úgy, de megoldható."
Ráadásul az ígyre és az úgyra is van pl vagy segítség!Engem továbbra is érdekelne, hogy a resource-os változatnál miért nem egyezik a 2 ref.
[ Szerkesztve ]
-
fatal`
titán
válasz kingabo #1976 üzenetére
"(#1975) hunfatal: ez is bitről bitre hasonlít össze, szal ugyanott vagy."
Nem mindegy, hogy egy memorystreamet hasonlítasz össze, vagy pixelenként a színt. Utóbbi sokkal lassabb volt.
Persze simán lehet, hogy a .NETben ez másképp van megoldva, a delphi mégis csak a nagyon régi és ótvar lassú pascalra építkezik.
[ Szerkesztve ]
-
martonx
veterán
válasz kingabo #1981 üzenetére
Visszatérve podDiablo eredeti kérdéshez, szerintem rosszul közelítitek meg. Ez nem programozás technikai kérdés, hanem program szervezési kérdés.
Azaz a kérdés az, hogy miért kell egy gombnak a képéről megmondani, hogy egyezik-e egy másikkal?
Mert ha egy állapotot akarunk jelezni a képpel, akkor sokkal egyszerűbbnek látnám ezt egy változóban is eltárolni, amit utána könnyen le lehet kérdezni, nem kell képeket összehasonlítani.
Mondom mindezt úgy, hogy nem ismerem, hogy mi is lenne az eredeti feladat, csak van egy olyan érzésem, hogy háttal ültök a lovon.Én kérek elnézést!
-
#90999040
törölt tag
válasz martonx #1987 üzenetére
Azaz a kérdés az, hogy miért kell egy gombnak a képéről megmondani, hogy egyezik-e egy másikkal?
[pod]Diablo #1959-es hozzászólásában ezt írja:
if (A2.Image == Image.FromFile(@"C:\-school-\prog\sakk\feherparaszt.png",true))Ez akárhogy nézem, 2 képet akarna összehasonlítani. Hogy miért, azt nem tudom, de nem is az én dolgom. Mivel erre a feladatra sem a ==, sem a Equals nem alkalmas, ezért kerestünk más megoldást.
-
Alkimista
csendes tag
válasz martonx #1986 üzenetére
Köszi a gyors választ!
Az értelme az hogy a már meglévő két alkalmazás fut pár helyen és ott nem igazán akarják lecserélni az adatbázis szervereket. Az alkalmazás sok felhasználós, és sok adat is van benne, úgyhogy a db szerverek ingyenes verziói a korlátok miatt nem igazán alkalmasak a feladatra.
Az Entity frameworkot nem ismerem, de koszi az ötletet. Megnézem mennyire alkalmas ORACLE objektumokra, gondolom SQL SERVER nem okoz neki problémát .
Alkimista
-
martonx
veterán
válasz Alkimista #1990 üzenetére
Hát nem győztél meg. Két különböző adatbázist használ ugyanaz a rendszer, és ez jó bárkinek is? Két külön gépen fenntartani, karbantartani két adatbázist, meg belépéskor választani, arról nem is beszélve, hogy a két adatbázis ugyan tud egymással kommunikálni, de komoly sebességbeli hátránya van egy Openquery-nek.
MSSQL 2008-nál már egy DB instancia 10 Gigás lehet. Ha nem több tucat felhasználóról van szó, akkor ügyes archiválással nagyon lazán elvisz egy komplett céget, sok felhasználóval 1-2 instanciával. Más kérdés, hogy az ingyenes verziók csak egy processzor magot használnak, és 1 GB ramot használnak, ami nagyon durva sebesség korlátot jelent (feltéve, hogy több millió soros kereszttáblás lekérdezéseket akarsz futtatni...). Belegondolok, hogy nálunk a core adatbázis szerver 8 magos, és 80 GB memóriája van, persze vannak olyan tábláink, ahol egy tábla 25GB
Én kérek elnézést!
-
[pod]Diablo
őstag
Hello!
Az elozo problemat sikerult megoldani vegul,utolag is koszonet megegszer a segitsegert.
szerk: lett volna egy kisebb gond,de kozbe megoldodott.sry a felesleges postert.
[ Szerkesztve ]
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
[pod]Diablo
őstag
válasz [pod]Diablo #1993 üzenetére
Most megint akadt egy kisebb problemam.Irtam egy fuggvenyt aminek elvileg jol kene mukodni,de kidob egy hibat amivel nemtudok mit kezdeni.
Itt a forraskod:
private void mouzenter(ref Button g)
{
for(int i=0;i<9;i++)
{
for (int j = 0; j < 9; j++)
{
if (g.Tag == "0")
{
if (tabla[i + 1, j + 1].Tag == "12")
{
tabla[i + 1, j + 1].BackColor = Color.Blue;
}
if (tabla[i - 1, j - 1].Tag == "12")
{
tabla[i - 1, j - 1].BackColor = Color.Blue;
}
}
}
}
}g az adott gombot jelenti.
Es itt a hiba uzenet:
Object reference not set to an instance of an object. amit erre a sorra dob ki:if (g.Tag == "0")Elore is koszonom a segitseget!
[ Szerkesztve ]
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
fatal`
titán
válasz [pod]Diablo #1994 üzenetére
A g amit átadtál nincsen létrehozva new-val, így megaka. Már lényegében gondolom ez futásidejű hibaüzenet.
-
[pod]Diablo
őstag
Ennek elvileg az lenne a lenyege,legalabbis azt szeretnem megvalositani hogy ha meghivom ezt egy gomb mondjuk click esemenyebe,akkor mindig az adott gomb tulajdonsagat nezze,es ezt az egeszet ne kelljen beirni minden egyes gombhoz,es atirni,
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
fatal`
titán
válasz [pod]Diablo #1997 üzenetére
Aham, na akkor ez így nem jó. Először is ezt a függvényt nem tudod egy gombhoz hozzárendelni, mert nem egyeznek a paraméterek.
Ezt a gomb létrehozásakor, vagy ha design time csináltad, akkor a lenyílólistában válaszd ki a clickesemenyt (adhatsz más nevet is neki):
gombamihezrendelniakarod.Click += new EventHandler(clickesemeny);
Ez pedig maga az esemény amit te mouzovernak hívsz ha jól látom
private void clickesemeny(object sender, EventArgs e)
{
if (sender is Button)
{
for(int i=0;i<9;i++)
{
for (int j = 0; j < 9; j++)
{
if ((sender as Button).Tag == "0")
{
if (tabla[i + 1, j + 1].Tag == "12")
{
tabla[i + 1, j + 1].BackColor = Color.Blue;
}
if (tabla[i - 1, j - 1].Tag == "12")
{
tabla[i - 1, j - 1].BackColor = Color.Blue;
}
}
}
}
}
}
}Nem biztos, hogy tökéletes, de valami ilyesmi lesz.
[ Szerkesztve ]
-
[pod]Diablo
őstag
Meg egy olyan kerdesem lenne, hogy azt hogy tudom megallapitani hogy az adott gomb hanyadik eleme a tombnek?
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
fatal`
titán
válasz [pod]Diablo #1999 üzenetére
Azt szerintem ebben a formában sehogy. Írsz egy függvényt ami lekéri
private int hanyadikgomb(Button button)
{
for (int i = 0; i < tombhossz; i++)
{
if (button.Equals(tomb[i])
{
return i;
}
}
}Persze ez így nem túl gyors, de jelenleg nincs jobb ötletem.
Ú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!
- LG UltraFine 27MD5KL-B Monitor 5K. 2 ÉV GYÁRI GARANCIA
- Újszerű Sonos Ray fehér színben
- Dell Latitude 7390 2in1, 13,3" FULL HD Touch, I5-8250U CPU, 8GB RAM, 256GB SSD, WIN 10/11, SZÁMLA, G
- Retró Geforce kártyák
- Lenovo Thinkpad T480S, 14" FHD IPS, I5-8350U CPU, 8GB DDR4, 256GB SSD, WIN 10, Számla, garancia
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Axon Labs Kft.
Város: Budapest