Új hozzászólás Aktív témák
-
A beolvasást áttettem a GetCellValues-ba:
public void GetCellValues(string fileName, string sheetName)
{
...
// Éjjel
addressName = "B4";
Cell theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
// If the cell does not exist, return an empty string.
if (theCell != null)
{
adat = theCell.InnerText;
if (adat != "") ejszaka_min = int.Parse(adat);
else
{
MessageBox.Show("Az éjszakai minimum hőmérséklet nincs kitöltve");
hiba = true;
return;
}
}
addressName = "C4";
theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
...
}Így már jó(bb)?
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
-
dqdb
nagyúr
Az Excel fájlban a B1 mezőben van a dátum, nem a B2-ben, ahogyan a forrásban szerepel.
Két megjegyzés:
1. oké, hogy az elvi lehetőség adott a közel teljes UTF8 használatára a forráskódban a szimbólumok nevéhez, azonban nem túl szerencsés ékezetes függvény- és változóneveket használni (és úgy általában nem angolt sem)
2. a GetCellValue metódust át kellene dolgozni, mert jelenleg minden érték kiolvasásánál megnyitod az Excel fájlt, megkeresed a munkalapot, ott mezőt, kiolvasod, majd lezársz mindenttAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
a GetCellValue függvényből egész számot kapsz vissza szövegként
Ez az, hogy nem kapok. Egy üres semmit ad vissza nem a dátumot szöveges formában. Megttenéd hogy rákukkantasz?[link] a /bin-ben van a táblázat is.Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
dqdb
nagyúr
Ha az Excelben adott mező formátuma dátum, akkor a
GetCellValue
függvényből egész számot kapsz vissza szövegként, ha idő, akkor egynél kisebb törtet, ha dátum és idő, akkor törtet. Ha van törtrész, akkor a szövegben tizedespont szerepel, amire aDouble.Parse(value)
akkor fog lefutni, ha olyan regionális beállításod van, ami tizedespontot használ, vagy második paraméterként átadsz egy ilyen locale-t. Az előző hozzászólásomban szereplőCultureInfio.InvariantCulture
ilyen, írd be, és működni fog.43566.556944444441 => 2019.04.11. 13:22:00
43567 => 2019.04.12. 0:00:00[ Szerkesztve ]
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
-
Elakadtam a dátumnál. A példa alapján, ha dátum van a cellában akkor
// Retrieve the date value in cell A2.
value = GetCellValue(fileName, "Sheet1", "A2");
Console.WriteLine(
DateTime.FromOADate(double.Parse(value)).ToShortDateString());Viszont nálam ez system.formatexception hibára fut.
+ Mit jelent az, hogy For dates, this code returns the serialized value that represents the date. ?
Valami trükk van a dologban, mert ha csak simán kiíratom a szöveget(Console.WriteLine(value);
), akkor semmi nem jelenik meg.[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
RedHarlow
aktív tag
Sziasztok,
Van egy java alapú weboldal, egy jegykezelő, minden jegynél van egy lista, hogy kik vásárolták meg. Ez a lista a chrome vizsgálójában tökéletesen látható a forráskódban azonban ha c#-al kezdem olvasni az oldalt akkor egy tök csupasz html-t kapok. Volt már valakinek szerencséje ilyenhez? Valaki tud esetleg valami leírást hogy hogy használható fel az ilyen alkalmazások adatai? Ezeket a jegyeknél lévő listákat szeretném összevetni a saját excelben lévő listámmal.
-
joysefke
veterán
xUnit Dispose vs Async hogyan?
Sziasztok!
Nagyon új nekem ez az xUnit, tegnap kezdtem és nem hiszem, hogy jól használom az Async metódusomatot a Dispose()-ban: működik, de nem teljesen azt csinálja a kód amit szeretnék/elvárnék...
Az adott xUnit test class egy külső API interfészről történő lekérdezést tesztel.
Az xUnit osztály konstruktorában van a setup kódom, itt többek között kreálok egy
frisssessionId
-t amitől a teszt végén mindenképpen meg kell szabadulnom.
A "megszabadulás" egy AsyncDeleteSession(string sessionId)
hívás formájában kell megtörténjen, ezért ezt beraktam a teszt osztálypublic async void Dispose()
metódusába.A problémám az, hogy a Dispose() metódusban a végrehajtás látszólag túljut az
await DeleteSession()
-ön, ezt onnan látom, hogy a SessionId törlődik a külső rendszerből.
De a DeleteSession() utáni szinkron utasítások már nem hajtódnak végre.Itt a kód!
Osztály deklaráció, konstruktor és Dispose:
public class GetAccountDetailsTests : IDisposable
{
// Setup
public GetAccountDetailsTests(ITestOutputHelper output)
{
// csak a lényeg:
_getSession = hot task indul
}public async void Dispose()
{
// nem annak látszik, de ez SZINKRON, a Task már elkészült
var sessionId = (await await _getSession).SessionId;
_output.WriteLine($"Teardown: DeleteSession({sessionId}) called...");
// ez biztosan most indul és a külső szervizből látszólag
// törlődik a session tehát a lényegi dolgát elvégzi,
// NEM tud exceptiont dobni
// (elnyeli őket) kóddal jelzi ha hiba volt
var result = await _client.DeleteSession(sessionId);
// Ide nem jut el a végrehajtás, nem ír semmit az outputba
var code = result.HttpStatusCode.ToString();
_output.WriteLine($"Teardown: DeleteSession(...) returned with {code}");
}Teszt metódus belseje, try-catch-ben, hogy biztosan eljusson a Dispose-ig:
public async void WhenValidArguments_ReturnsAccountDetails()
{
// Arrange
var sessionId = (await await _getSession).SessionId;
// Act
var result = await _client.GetAccountDetails(sessionId);
AccountDetailsModel account = JsonConvert.DeserializeObject<AccountDetailsModel>(result.Json);
// Assert
Assert.True(result.HttpStatusCode == System.Net.HttpStatusCode.OK);
Assert.True(account.AccountName == _settings.AccountName);
}Nem tudom hogyan kéne értelmesen debuggolni a tesztet, hiába rakok a Dispose-ba breakpointot átugrik rajta amikor a VS "Debug selected test" opciójával indítom.
[ Szerkesztve ]
-
moseras
tag
válasz RedHarlow #8738 üzenetére
Üdv,
Egyetértek az előttem hozzászólokkal, néhány megjegyzésem lenne:
string filesdir = Path.Combine(@"C:\tmp", "files");
// Összes
Console.WriteLine("Összes");
string[] files = Directory.GetFiles(filesdir);
foreach (var item in files)
{
Console.WriteLine(item);
}
Console.WriteLine($"{files.Length} db");
// A GetFiles szűrője alapján (a GetFiles nem támogatja a Regex-et)
Console.WriteLine();
Console.WriteLine("A GetFiles szűrője alapján");
files = Directory.GetFiles(filesdir, "REF*.xml");
foreach (var item in files)
{
Console.WriteLine(item);
}
Console.WriteLine($"{files.Length} db");
// Regex-el tovább szűrve
Console.WriteLine();
Console.WriteLine("Regex-el tovább szűrve");
Regex reg = new Regex(@"REF\w+\d+\w+\.xml", RegexOptions.IgnoreCase);
var rfiles = Directory.GetFiles(filesdir, "REF*.xml")
.Where(path => reg.IsMatch(path))
.ToList();
foreach (var item in rfiles)
{
Console.WriteLine(item);
}
Console.WriteLine($"{rfiles.Count} db");Eredmény:
Összes
C:\tmp\files\1.xml
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
C:\tmp\files\REFFFFFFFFFFFF.xml
7 db
A GetFiles szűrője alapján
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
C:\tmp\files\REFFFFFFFFFFFF.xml
6 db
Regex-el tovább szűrve
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
5 dbInnentől kezdve tényleg tudni kellene, hogy mit is akarunk szűrni, mert ugye a REFFFFFFFFFFFF.xml nem mindegy, hogy benne van e, vagy nincs, vagy a számok és a REF között kell e lennie még további karakternek, ha igen, milyennek, hány darabnak, stb. De szerintem innen már boldogulsz vele.
Imi.
[ Szerkesztve ]
-
dqdb
nagyúr
válasz RedHarlow #8736 üzenetére
[link]
erre nem kell regexunrecognised escape characterre jutottam. Stackoverflow-on\googleben\youtubeon is kerestem hasonló hibákat de nem igazán jött össze.
Pedig a nálam legalábbis első találat lenne a megfejtés. Vagy @" vagy .*\\..tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
RedHarlow
aktív tag
Ez már megtörtént közben, REF.*\.xml-re jutottam, de unrecognised escape characterre jutottam. Stackoverflow-on\googleben\youtubeon is kerestem hasonló hibákat de nem igazán jött össze. Másfél óra önálló keresés alatt nem írok be ide semmit.
[ Szerkesztve ]
-
RedHarlow
aktív tag
válasz moseras #8732 üzenetére
Lenne még egy olyan eset, hogy REFblabxxsokszámxxxblabla.xml fájlokat kellene számolnom, úgy, hogy azok tényleg fájlok legyenek tehát legyen .xml kiterjesztésük és REF-el kezdődjenek. Tehát ezt szeretném valahogy megadni keresési opciónak:
REF*.xml
Előre is köszönöm a segítséget!
[ Szerkesztve ]
-
moseras
tag
válasz RedHarlow #8731 üzenetére
Üdv!
List<string> words = new List<string> { "class", "xml", "xlsx", "teszt" };
string patt = string.Join("|", words);
Regex regex = new Regex(patt, RegexOptions.IgnoreCase);
string v = "class asdfgh 123 xml8 xls xlsx15 xml xlsx";
int appcount = regex.Matches(v).Count;
Console.WriteLine(appcount);Azt írja ki, hogy 5
[ Szerkesztve ]
-
RedHarlow
aktív tag
Sziasztok,
Regex.Matxhes-el megoldható egyszerre több szó keresése?
A (B)class, xml, xlsx(/B)-eket szeretném megszámolni egy fájlban.int appcount = Regex.Matches(text, @"\.class\b").Count;
-
RedHarlow
aktív tag
A fájl beolvasásával van valami baj szerintem, mert ha Rock.Text sima szöveg akkor abban megtalálja amit kell. :/
-
RedHarlow
aktív tag
Csatolom:
public static string getBetween(string strSource, string strStart, string strEnd)
{
int Start, End;
if (strSource.Contains(strStart) && strSource.Contains(strEnd))
{
Start = strSource.IndexOf(strStart, 0) + strStart.Length;
End = strSource.IndexOf(strEnd, Start);
return strSource.Substring(Start, End - Start);
}
else
{
return "";
}
}
private void Button2_Click(object sender, EventArgs e)
{
ofd.Filter = "TXT|*.txt";
ofd.Title = "Please select Rock";
ofd.FileName = "Rock_*";
if ((ofd.ShowDialog() == DialogResult.OK))
{
textBox1.Text = ofd.SafeFileName;
var filepath= ofd.FileName;
Rock.File = filepath;
Rock.Text = File.ReadAllText(Rock.File).ToLower();
string data = getBetween(Rock.Text, "Rockband name: ", "\n");
MessageBox.Show(data);
HotFix.HFID = data;
}[ Szerkesztve ]
-
RedHarlow
aktív tag
Sziasztok,
Van esetleg valakinek olyan txt keresője, ami egy adott szó után lévő pár karaktert elmenti változóként? Be szeretnék tallózni egy fájlt és egy bizonyos érték érdekelne belőle amit később a programban használni szeretnék.
ui: Kezdő vagyok, ne öljetek meg
[ Szerkesztve ]
-
ondedrive-ról hogy tudok letölteni egy fájlt? Ha csak a megosztáss linket adom meg a webClient.DownloadFile()-nak, akkor csak egy html oldalt tölt le.[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
Köszi! Sikerült is beolvasni pár cellát, de ha éppen üres, attól kiborul. Ha pedig nem numerikus érték (szám) van az adott cellában, akkor nem a szöveget adja vissza, hanem egy számot. De hogy pl. a "teszt"-ből hogyan lesz 9 az nem teljesen világos.
Tuti valamit rosszul csinálok, de mit?
Ez a kód[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
dqdb
nagyúr
Az Office interop arról szól, hogy egy futó/akkor elindított Excel alkalmazást vezérelsz távolról a COM interfészén keresztül, hogy hajtson végre ilyen-olyan műveleteket, így mindenképpen telepített kliens kell neki mind fejlesztés közben, mind máshová feltelepítve.
Ha Excel telepítés nélkül szeretnél .xlsx fájlokat kezelni, akkor nézz rá az EPPlus és Open XML SDK projektekre.
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
Létezik, hogy a fejlesztő gépre fel kell telepíteni az Excel-t, hogy a referencialistába kerüljön?[link]
Tegyük fel telepítem a próba verziót. Az elkészült program igényelni fogja, az Excel jelenlétét, vagy a szükséges komponensek befordulnak a programba?
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
dqdb
nagyúr
válasz RedHarlow #8720 üzenetére
Nem ártana, ha véletlenszerűen kiollózott részletek helyett a komplett osztály forrását betennéd, mert így senki sem fog tudni semmi értelmeset mondani, legfeljebb találgatni, hogy mit csinálhattál.
Az utolsó előtti hozzászólásodban például az látszik, hogy a pcpath egy lokális változó, aminek értéket adsz, aztán nem kezdesz vele semmit sem.
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
RedHarlow
aktív tag
Megnéztem textBox1.Text-et ha átállítom a teljes útvonalra, ofd.FileName akkor tökéletes feltölti a betallózott fájlt. Szóval tényleg a pcpath változóm mentésével lesz a gond, tudnál segíteni hogy hogy tudom valódi változóként elmenteni?
-
RedHarlow
aktív tag
válasz joysefke #8718 üzenetére
Itt tallózom be a fájlt és mentem el mint változó, pcpath.
// Browser/Counter/Path save - PC
private void button1_Click(object sender, EventArgs e)
{
ofd.Filter = "TXT|*.txt";
if ((ofd.ShowDialog() == DialogResult.OK))
{
textBox1.Text = ofd.SafeFileName;
var pcpath = ofd.FileName;
string text = File.ReadAllText(pcpath).ToLower();
int pccount = Regex.Matches(text, @"\balma\b").Count;
label2.Text = Convert.ToString(pccount);
}
}Egy másik gombbal pedig szeretném feltölteni ugye, ha nem változót használok akkor simán feltölti a fájlt igen. Nem jól hoztam létre a változót a tallózásnál? Kicsit olyan mintha csak az adott résznél tudnám használni a változót máshova nem dobja át az értékét.
[ Szerkesztve ]
-
joysefke
veterán
Minimális programozás tudás nélkül ez nem fog menni...
Korábban egy betallózásról írtál. Feltételeztem, hogy a betallózott fájl útvonala van a pcpath változóban.
De neked még ilyen nevű változód sincsen. Nem értem honnan szedted
Első körben, hogy kiderüljön működik-e ez az egész, teszt jelleggel cseréld le a pcpath nevet egy létező nem túl nagy fájl útvonalára pld: @"\tmp\test.txt" . Ez lesz a PutFiles első argumentuma.
És ellenőrizd le, hogy ez a putfiles metódus ez fájl útvonalat is elfogad-e vagy mindenképpen mappa útvonal kell-e neki. Te betallózott fájlról írtál, de a példakódban az első arguáentum az könyvtár
[ Szerkesztve ]
-
RedHarlow
aktív tag
válasz joysefke #8714 üzenetére
Igen, közben megtaláltam.
A következő kérdésem, hogy itt, hogy tudom használni a pcpath nevű változóm, ami a betallózott fájlom útvonala?
session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
(@"pcpath", "/home/user/", false, transferOptions)("pcpath", "/home/user/", false, transferOptions)Ezeket próbáltam de nem működik így.
Exception thrown: 'WinSCP.SessionRemoteException' in WinSCPnet.dll
The thread 0x2bcc has exited with code 0 (0x0).
'pcpath' fájl vagy mappa nem létezik.
Rendszerhiba. Kód: 2.
A rendszer nem találja a megadott fájlt
The program '[17652] WindowsFormsApp1.exe' has exited with code 0 (0x0).[ Szerkesztve ]
-
RedHarlow
aktív tag
Sziasztok!
WinSCP-n keresztüli fájlátvitelt csinált már valaki Visual Studio / C# segítségével? Sehogy se sikerül használni a hivatalos oldalon megadott kódot. Az alábbi hibákat kapom:
The type or namespace WinSCP could not be found.
The type or namespace Protocol could not be found.
The type or namespace SessionOptions could not be found.
The type or namespace TransferOptions could not be found.KÓD
using System;
using WinSCP;
class Example
{
public static int Main()
{
try
{
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "user",
Password = "mypassword",
SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:..."
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult =
session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
}
}
return 0;
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e);
return 1;
}
}
}[ Szerkesztve ]
-
Létezik olyan módszer, amivel egy onedrive-ban tárolt excel-ből veszek ki adatokat anélkül, hogy letölteném, és megnyitnám mint sima excel fájl?
Mondjuk még csak ott tartok, hogy nem tudom hozzáadni a "Microsoft Excel xx.xx Object library", mivel nincs a listában. Ez lehet, a Community edition gyengesége, vagy valamit még nem telepítettem fel?Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
joysefke
veterán
válasz RedHarlow #8707 üzenetére
Ha azt is kezelni akarod, ha a keresett szó esetleg többször előfordul a szöveg egy szavában (lalala - la, 3x)
akkor egészben a szövegen (beolvasod egy darab stringként) vagy soronként végigiterálsz és hívogatod astring.Substring(string, int, StringComparison)
metódust amely mindig a keresett szó első előfordulásának indexét adja vissza. Minden egyes találat után növeled az offsetet (a második, egész szám paraméter) az előző előfordulás utánra addig amíg van találat. Az eredményeket számolod.Most hogy leírtam ez utóbbi nekem jobban tetszik mint a fenti.
[ Szerkesztve ]
-
joysefke
veterán
válasz RedHarlow #8707 üzenetére
én a következőképpen állnék neki:
-(1) Méretétől függően a fájlt beolvasod vagy egyben, vagy végigiterálsz rajta soronként.
-(2) Minden sort szétbontasz szavakra
string.Split(...)]
.A string.Split(...) -et úgy paraméterezed, hogy pontot-vesszőt-szóközt dobjon. (sokat nem számít, de gyorsítja a köv pontot)
-(3) Minden egyes szóra leellenőrzöd, hogy az adott szó tartalmazza-e a keresett szót:
string.Contains(string, string, StringComparision)
Ha igen, növeled a számlálódat. Kisbetű-nagybetűt érdemes figyelmen kívül hagyni, illetve a regionális opciókkal is lehet esetleg játszani (nem tudom érdemes-e). Ehhez a StringComparison enum paramétert állítod be ahogy szeretnéd (ignore case legyen beállítva).
A módszer jól fog működni addig amíg nem akarod azt is nyilván tartani, ha a keresett szó többször szerepelt némely szóban. (lalala - la, 3x).
[ Szerkesztve ]
-
RedHarlow
aktív tag
Sziasztok,
Tudna valaki segíteni egy szókereső szkript megírásában? Visual Studioval kezdtem ismerkedni, szeretném ha a betallózott fájlban megszámolná, hogy hányszor szerepel egy bizonyos szó, majd elmentené azt egy változóba. A neten rengeteg keresőt találtam de ilyet pont nem. Link is jó esetleg.
-
nagyúr
válasz DrojDtroll #8703 üzenetére
Git
-
cattus
addikt
-
DrojDtroll
veterán
Milyen verziókövetést használtok?
Én a Microsoft tfs-es megoldását a tfvc-t de elég bug-osnak tűnik néha. Van közöttünk valaki aki ugyanezt használja? Ha igen, milyen hibákkal találkoztatok eddig?
-
DrojDtroll
veterán
Sziasztok!
Gondolom a legtöbben itt Visual Studiót használunk a fejlesztéshez. Elég lusta vagyok ezért sokszor inteli menüből generálok metódust. Mért tart ez néha nagyon sok ideig?
-
t-shirt
veterán
válasz Zalanius #8700 üzenetére
Köszönöm!
Próbálkoztam én az eseménykezelő hozzáadásával is, de rosszul használtam a sender-t. Az esemény elindításával meg nem értem semmit mert nem tudtam megállapítani hogy melyik kiválasztásra indult el.
Hibásan a "sender.ToString()" -el próbálkoztam a "((RadioButton)sender).Text" helyett.
Köszönöm, így most már jó
[ Szerkesztve ]
Ú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!
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Asszociációs játék. :)
- Milyen TV-t vegyek?
- Nagy "hülyétkapokazapróktól" topik
- Autós topik
- Wise (ex-TransferWise)
- Mibe tegyem a megtakarításaimat?
- Kerékpárosok, bringások ide!
- eMAG vélemények - tapasztalatok
- További aktív témák...
- Noblechairs Icon black (Karácsony előtt olcsóbban!) A gamer székek királya!
- ASUS MAXIMUS VIII GENE Z170 Alaplap!
- Intel Core i7-6700K 4-Core 4GHz LGA1151 (8M Cache, up to 4.20 GHz) Processzor
- Intel Core i7-8700K 6-Core 3.7GHz LGA1151 (12M Cache, up to 4.70 GHz) Processzor!
- iphone 14 Pro 256 GB - használt, független, 240 000 HUF
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Axon Labs Kft.
Város: Budapest