Hirdetés
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- Xiaomi 15 - kicsi telefon nagy energiával
- Üzemidőt áldoz a fényerő oltárán a Garmin Fenix 8 Pro
- Megérkezett a Pixel 5 és 4a 5G
- iPhone topik
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- Vivo X200 Pro - a kétszázát!
- Milyen okostelefont vegyek?
- Samsung Galaxy A33 5G - a három az majdnem öt
- Okosóra és okoskiegészítő topik
Új hozzászólás Aktív témák
-
quailstorm
félisten
válasz
Tomi_78 #10219 üzenetére
Lehet, de nem érdemes.
Ugyanúgy meg lehet tanulni egy szerializálós libet mint a programozás alapjait.Abban amit csinálsz nagyon sok a munka, nagyon sok a hibalehetőség és nem tesz hozzá a játékhoz semennyit. Csak szaporodnak a kódsorok a semmiért.
Persze mindent fel lehet találni nulláról, de nem célszerű.
#10220martonx: ha jól számolom 5 éve csiszolja, de már akkor nagyon elavult alapokon kezdte.
-
martonx
veterán
válasz
quailstorm #10218 üzenetére
Bocs, azt hittem valami új projektről van szó.
Ha valaki 30 éve csiszolgatja a régi projektjét és itt tart, hogy most már le is kellene tudnia menteni valami adatot, valahová... -
Tomi_78
aktív tag
Azt lehetőség szerint pont el szerettem volna kerülni, hogy valami külső kiegészítőt kelljen használni, egyrészt mert nem ismerem ezeket és a működésüket, használatukat, valamint a feladat egyszerűsége talán nem is teszi indokolttá.
Amit magával az adott fejlesztőeszközzel meg lehet csinálni, legtöbbször azt használom.
Persze biztos, hogy vannak bizonyos feladatok megoldásához hatékonyabb eszközök, de esetemben a probléma teljesen alapszintű volt. -
quailstorm
félisten
válasz
martonx #10217 üzenetére
Milyen új projecten?
Egy 90-es évek szimulátorhoz ajánlottam ahol a kókányolásállóság és a kompatibilitás régi frameworkkel sokkal jobban számít.
Ráadásul ha visszakeresel a nevére:
SharpDevelopot használ. Az nem támogat 4.5.1-nél újabb .NET Frameworkot. Tehát valószínűleg nem tudja használni a System.Text.Json-t.Úgyhogy szerintem de, elegáns helyzetre szabva olyan libet ajánlani ami biztos működik nála. Ahhoz a pet project játékhoz óriási előrelépés lenne neki a Newtonsoft is.
-
martonx
veterán
válasz
quailstorm #10214 üzenetére
Teljesen érthető, ha valahol nem cserélik le. De ettől még egy új projekten csukott szemmel a régi legacy libet ajánlani, hát nem elegáns.
-
quailstorm
félisten
válasz
Alexios #10215 üzenetére
Persze, teljesen másképp lett megoldva végül a probléma. Integrációs tesztek miatt mondtam a többieknek hogy felesleges custom resolvert meg normalizálást meg minden féle bonyolult dolgot implementálni. Deszerializálás helyett inkább a referencia is szerializálva van és a két szerializált json van összehasonlítva.
Előző projectemen is elég keményen van abuzálva a Newtonsoft plugin architektúrás workspace deszerializáláshoz, úgyhogy ott is azért nem éri meg váltani.
-
Alexios
veterán
válasz
quailstorm #10214 üzenetére
Lecserélni a meglévőt azért teljesen más use case mint egy új projektnél azt behúzni, vagy azt ajánlani. Nyilván legacy-t migrálni nem feltétlenül érdemes, vagy legalábbis nagyon át kell gondolni mennyi munkával jár, és mit várunk a végén tőle.
Viszont a thread amit linkeltél 3 éves, azóta pl. lehet származtatott osztályokat is deszerializálni, a referencia kezelése is finomodott stb. Pont ez a lényeg, hogy ezt aktívan fejleszik, míg a newtonsoftot már kevésbé(teljesen mással foglalkozik már James NK).
Szerintem ha új projektnél problémás a system.text.json akkor lehet ott érdemes elgondolkodni hogy biztos a libraryvel van-e a probléma, vagy mit akarunk csinálni egyáltalán.
Pl. láttam nemrég olyat hogy a Newtonsoftba van beépítve json schema validator, viszont ez sokkal szabadabban értelmezi a json schema szabványt mint bármi más. Így nem tudták lecserélni ezt a részét a kódnak egy más libraryre mert folyamatos validációs hibák voltak, mert a rendszer többi része is invalid sémára épült.
Na most itt lehet mondani hogy de jó a newtonsoft, bezzeg a másikkal nem lehet megoldani, de azért lehet mégiscsak az lenne a jobb ha a kód inkább jól lett volna megírva. -
quailstorm
félisten
válasz
martonx #10212 üzenetére
Felhasználásfüggő. Nem teljes helyettesítő a System.Text.Json.
De persze, Tominak valószínű elég, meg az átlag projectbe is elég. Munkában előző projectemnél biztosan nem volt érdemes lecserélni a Newtonsoftot, mert csak a rengeteg szívást és kompatibilitási problémát kaptuk volna a nyakunkba, de mostani projectemen is volt olyan eset (bocs, elfelejtettem), ahol a megoldás egyszerűbb lett volna és jobban dokumentált volt Newtonsofttal.
Szóval én még nem temetném a Newtonsoftot, de nyilván új projecten nem azzal kell kezdeni feltétlen.
-
Tomi_78
aktív tag
válasz
quailstorm #10211 üzenetére
Átrendeztem kicsit akkor a tanácsod alapján a kódot és most úgy látszik, helyesen működik (bár nem értem, mi volt a hiba); köszönöm szépen!
StreamWriter f = new StreamWriter("mentes.txt");
for (int j=0; j<jatelemlista.Count; j++) {
var je = jatelemlista[j];
switch (je.neve) {
case "jatekos": //Adatok beírása
break;
case "robot": //Adatok beírása
break;
//És így tovább...
}if (j<(jatelemlista.Count-1)) f.WriteLine("."); //Zárótag.
}
f.Close(); -
martonx
veterán
válasz
quailstorm #10211 üzenetére
Newtonsoftot ne már mikor 5 éve van System.text.json
-
quailstorm
félisten
válasz
Tomi_78 #10210 üzenetére
Tegyél breakpointot a kiírás közben. Csak ez a kód ír ki pontot?
A for-t én Count - 1-ig futtatnám. A switchet kitenném helper methodba. A pontírás maradna a foron belül a helper method után. For végeztével meghívnám mégegyszer a helper methodot az utolsó elemre.
De igazából az egésznek nem sok értelme van. Miért szívatod magad saját szeralizátorral? Legyen rendes game state objected és használj valami XML vagy JSON szerializáló libraryt (Newtonsoft mondjuk).
Ez így 90-es évek szimulátor.
-
Tomi_78
aktív tag
Sziasztok!
Kis játékomban éppen a mentést programozom le, de folyton abba a hibába ütközöm, hogy az alábbi ciklus a fájl legvégére is beír egy pontot, holott nekem oda nem kellene, mert kiolvasáskor így úgy érzékeli, hogy jön még egy játékelem a fájlból, pedig csak fájlvége jel van már ott.
Valaki látja, hogy mit rontok el? Vagy teljesen rosszul csinálom?StreamWriter f = new StreamWriter("mentes.txt");
for (int j=0; j<jatelemlista.Count; j++) {
var je = jatelemlista[j];
switch (je.neve) {
case "jatekos": //Adatok beírása
if (j<(jatelemlista.Count-1)) {
f.WriteLine("."); //Ez nem jó valamiért
}; //Zárótag.
break;
case "robot": //Adatok beírása
if (j<(jatelemlista.Count-1)) {
f.WriteLine("."); //Ez nem jó valamiért
}; //Zárótag.
break;
//És így tovább...
}
}
f.Close(); -
pmonitor
aktív tag
-
pmonitor
aktív tag
válasz
sztanozs #10206 üzenetére
Igazából maga a ComAutoWrapper kb. 18-20 KB lenne. Csak mi 1-2 sűrűbben használt dolgot is beletettünk. Pl. a "ExcelSelectionHelper.cs", "ExcelStyleHelper.cs" fájlokat kapásból ki lehetne dobni belőle. De azért írtam azt, hogy mindkettő package elfér egymás mellett. Nem zavarják egymást. És ahol elfér több MB-os openxml, ott már ez a pár 10 KB-os ComAutoWrapper is bőven elfér. De ha mind a kettőt használja valaki, akkor már csak 1 dolog marad megoldatlan: A binárisan tárolt fájlok(pl. jelszóval védett), ha az excel nincs telepítve. Mert ezt az esetet egyik sem tudja kezelni.
-
pmonitor
aktív tag
válasz
quailstorm #10204 üzenetére
Igen. Ez is benne van az összehasonlító táblázatban. Az openxml meg nem tudja a binárisan tárolt fájlokat kezelni. Megpróbálom ide másolni a táblázatot. De nem tudom, hogy olvasható lesz-e.
## 📊 Comparison: OpenXML vs COM Automation
This section compares two popular approaches for automating Office documents in C#.
| Feature / Capability | OpenXML SDK | COM Automation (`ComAutoWrapper`) |
|--------------------------------------------------|------------------------|------------------------------------|
| File-based read/write | ✅ Yes | ❌ No |
| Live Office application control (Excel/Word) | ❌ No | ✅ Yes |
| Handles password-protected files | ❌ No support | ✅ Yes (if Office can open it) |
| Supports running VBA macros | ❌ No | ✅ Yes |
| Reads current user selection | ❌ No | ✅ Yes |
| Formatting (color, styles, font size, etc.) | ⚠️ Limited | ✅ Full |
| Chart and graphic manipulation | ❌ No | ✅ Yes |
| Interactive editing of running instance | ❌ No | ✅ Yes |
| Requires Interop DLLs | ❌ No | ❌ No (via ComAutoWrapper) |
| Can be used without Office installed | ✅ Yes | ❌ No |
| Dependency size | ✅ Small | ✅ Small (via wrapper) |
> ⚠️ Note: OpenXML is best for static document generation and server-side manipulation.
> ✅ COM Automation is best for real-time document interaction and full feature access.
Using `ComAutoWrapper`, you get the **full power of Office** with the **ease of a lightweight, interop-free helper**, suitable for Excel and Word automation alike.
While both OpenXML and COM automation are useful for working with Office documents, they serve very different use cases. Here’s a feature-by-feature comparison to help you decide.
De mondjuk azt beszéltük meg a ChatGpt-vel, hogy vígan megférnek egymás mellett is. Igazából az sem mind1, hogy a ComAutoWrapper ~31 KB, az openxml, meg ~10 MB. Pl. ez sem mind1. -
pmonitor
aktív tag
válasz
pmonitor #10202 üzenetére
A ChatGpt írt egy összehasonlító táblázatot az "openxml", és a "COM Automation" között. A táblázat a README.md végén található. Érdekes összehasonlítás... Az eredmény magáért beszél. A ChatGpt nagyon sokat segített a projekt implementálásában.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- PROHARDVER! feedback: bugok, problémák, ötletek
- Chieftec játék értékes nyereményekkel!
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Formula-1
- Mit tehetsz jogilag, ha átvertek, megkárosítottak a Hardveraprón?
- Filmvilág
- Analóg fényképezés
- Sorozatok
- Mozgásban a Cronos: The New Dawn
- További aktív témák...
- új, bontatlan Kingston FURY Impact 32 GB KIT DDR4L-3200 SoDIMM CL20-22-22 memória / kisker garancia
- Asztali PC , i5 10400F , RX 6600 XT , 16GB DDR4 , 512GB NVME
- Bomba ár! Fujitsu H760 - i7-6820HQ I 32GB I 500SSD I 15,6" FHD I Nvidia 4GB I Cam I W10 I Garancia!
- LG 32" ívelt Monitor 32MR50C-B
- Bomba ár! HP EliteBook 840 G8 - i5-1145G7 I 8GB I 256GB SSD I HDMI I 14" FHD I Cam I W11 I Gari!
- LG 48C4 - 48" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
- HIBÁTLAN iPhone SE 2020 128GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS2192, 100% Akkumulátor
- Eladó ÚJ White Shark Commandos mechanikus gamer billentyűzet / 12 hó jótállással
- DDR5 8/ 16/ 32GB 4800-5600MHz SODIMM laptop RAM, több db- számla, garancia
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest