Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Datumbereik

Categorien

AND

Onderwerpen

AND

Subforum

Topicstarter

Topicstatus

683 topics - Pagina 1 van 28

Asynchr. socket server met [Visual C#.net]

29-01 22:18 discussie 3
Beste mede tweakers,

Ik ben nog beginnende met c#.net en ik probeer aan de hand van wat voorbeelden te begrijpen hoe dit in zijn werk gaat. Nu wil ik graag het volgende bereiken (waar ik momenteel visual ;

Een socket server die HTTP requests kan ontvangen, parsen en vervolgens Form onderdelen(in een Windows Form application) aansturen.

Hiervoor het voorbeeld gebruikt op deze website

Echter weet ik niet of dit het voorbeeld is waar ik op af moet gaan. Als ik dit gebruik blijft de GUI hangen.

Als ik hem ombouw om de GUI niet vast te laten hangen (na wat Googlen heb ik dit hier gevonden:) Dan start allebei wel goed op, echter kan ik dan niet communiceren met formulier onderdelen aangezien mijn informatie die ik via de sockets binnen krijg in 'static' functies komt te zitten.

Mijn vraag; zit ik op de goede weg? Of moet ik het helemaal anders aanpakken? Ik las ook adviezen over een background worker, maar ik geloof dat dat meer met een langdurige taak te maken heeft waarbij je een progress terug kan krijgen (getal tussen 0 en 100). niet echt wat ik zoek dus.

Kan iemand mij een klein beetje in de goede richting helpen waar ik naar moet kijken?

Alvast vriendelijk bedankt!

c# windows form bruteforce

16-01 18:44 vraag 1

Vraag

can any one tell me how to make a c sharp windows form bruteforce and it need to save to combinations to a .txt file thanks

[C#] BackgroundWorker

30-12-2015 discussie 7
Hallo tweakeraars,

Om de algehele ervaringssnelheid te verhogen wil ik calls naar de webservice die ik gebruik laten afhandelen door een backgroundworker. Dit is de eerste keerdat ik hiermee werk. Ik ben er al achter dat het niet mogelijk is om meerdere functies in n backgroundworker te laten uitvoeren. Ik google geraadpleegd en een Queue lijkt (mij) de beste optie. Gewoon een lijst van methodes waar door heen getereerd wordt. Het kan zijn dat ik de Queue verkeerd begrepen heb.. Nu probeer ik een goed voorbeeld te vinden op Stackoverflow en MSDN maar dit is mij niet gelukt. Kan iemand mij een voorbeeld geven of in ieder geval uitleggen hoe ik deze in elkaar moet zetten?

Grtz

[C#] Conditional operator assignment, waarom werkt dit niet?

06-12-2015 discussie 8
Ik heb de volgende regel, waarbij het een gegeven is dat EventA en EventB IEvent implementeren.
C#:
1 IEvent e = success ? new EventA() : new EventB();
Dit levert een compile error op:
code:
1 error CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between `EventA' and `EventB'
However, na wat proberen werkte dit wel.
C#:
1 IEvent e = success ? (IEvent)new EventA() : new EventB();
Kan iemand mij uitleggen waarom de compiler die cast verwacht?

Alvast bedankt

[C#] Close On Screen Keyboard

04-12-2015 discussie 4
Beste tweakeraars,

Voor een touch-applicatie roep ik op een gegeven moment het On Screen Keyboard (OSK) van Windows 7 aan. Maar om gebruiksgemak te verbeteren moet deze automatisch worden afgesloten wanneer de focus van het textbox af is. Veel artikelen op StackOverflow en MSDN Social open en sluiten het OSK met de onderstaande regels. Deze werkte voor mij niet dus heb ik een andere oplossing bedacht. Hij opent het OSK wel, alleen sluiten lukt niet. Iemand een idee?
C#:
1 2 3 _p = System.Diagnostics.Process.Start("osk.exe"); _p.Kill();

C#:
1 2 3 4 5 6 7 8 9 10 private void CallOnKeyboard(object sender, EventArgs e) { string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink"; string onScreenKeyboardPath = Path.Combine(progFiles, "TabTip.exe"); _p = Process.Start(onScreenKeyboardPath); } private void CloseOnKeyboard(object sender, EventArgs e) { _p.Kill(); }

[c#] lambda

03-12-2015 discussie 17
Ik gebruik niet zoveel lambda en ben er niet echt vloeiend is, dus misschien is het een simpele vraag.
Maar hier gaat hij.

List 1 met 'wagons': (id, nr)
List 2 met 'shipments': (id, wagonnr, active)

Als resultaat wil ik een List met alle wagons, waarvan het wagonnr niet voorkomt in de List shipments met een actieve = true waarde.

Dus de wagonnr kan in List2 zitten met een active=false waarde f de wagonnr kan er niet in voorkomen. Beiden moeten in het resultaat zitten.

Simpele lambda's lukken me wel, maar een voorzetje zou hier geapprecieerd worden.
Als tijdelijk oplossing haal ik de gegevens nog eens op uit de database met een aparte query.

[C#/ASP.NET] Client side frameworks passend bij MVC

22-11-2015 discussie 14
Dag allen!

Ik ben sinds kort wat aan het rondneuzen in .NET (mijn achtergrond is Scala/Python/Java) en wil graag een webapp bouwen in C# met ASP.NET MVC. Nu ben ik benieuwd welke Javascript/clientside frameworks er goed passen bij ASP.NET MVC. Ik besef dat je feitelijk natuurlijk elk JS framework zou kunnen gebruiken met ASP.NET MVC, maar ik kan me voorstellen dat qua best practices en architectuur bepaalde frameworks beter samen gaan met ASP.NET dan andere
Dus de vraag aan ervaren .NET engineers is: wat gebruiken jullie het liefst als JS framework voor jullie ASP.NET MVC apps, en waarom?

Bij voorbaat dank!

[C#] MVC model yahtzee

02-11-2015 discussie 6
Hello people,

Ik heb als opdracht om het yahtzee spel te maken met het mvc model maar ik krijg iets niet gemaakt. Ik heb een cheat en als je deze gebruikt wordt er een dobbelsteen toegevoegd. Wanneer het spel load dan worden er automatisch 5 dobbelsteen aangemaakt met deze code
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 int mAantalTeerlingen = 5; void TeerlingenTonen() { for (int i = 0; i < mAantalTeerlingen; i++) { //instantie van teerlingcontroller TeerlingController tijdelijkeTeerling = new TeerlingController(); mTeerlingenControl.Add(tijdelijkeTeerling); cheatsview.AddTeerling(tijdelijkeTeerling); } for (int i = 0; i < mAantalTeerlingen; i++) { TeerlingView teerlingView = mTeerlingenControl[i].getView(); int horizontalPosition; horizontalPosition = i * teerlingView.Width; teerlingView.Location = new System.Drawing.Point(horizontalPosition, 0); panel3.Controls.Add(teerlingView); Controls.Add(panel3); mTeerlingenControl[i].Werp(); mTeerlingenControl[i].UpdateUI(); } }
en er is een andere klasse (code behind van een view - user control) waarin de clickevent staat van de cheat. Wanneer je op deze klikt zou er een dobbelsteen worden toegevoegd.

Ik weet niet hoe ik hier aan moet beginnen. ik heb al geprobeerd om de waarde van "mAantalteerlingen" te veranderen naar 6, en de form te refreshen (maar kan niet refreshen in een andere klasse), maar ik geraak niet aan de code in form in de cheat klasse.
Omdat het maken van de dobbelstenen in de load staan weet ik niet hoe ik er een kan toevoegen wanneer het spel bezig is.

Als iemand mij hiermee kan helpen zou dit geweldig zijn.
Alvast bedankt

[C#] Efficienter programmeren?

16-09-2015 discussie 54
Ik ben begonnen met C# en het gaat prima na mijn idee. Ik snap veel, maar heb wel het idee dat ik inefficient aan het programmeren ben. Op internet zie je veel voorbeelden en met kopieren/plakken kom je een eind. Daarna probeer ik uiteraard de code te begrijpen.

Echter nu heb ik het idee dat ik het verkeerd aanpak. Voor elke byte die ik wil lezen open ik het bestand opnieuw met BinaryReader. Zat er eerst aan te denken om alle "bytes" in een array te zetten en deze dan uit te lezen, maar voor nu hoef ik nog niet te kijken naar performance gezien het snel werkt.

De code werkt en daar heb ik opzich geen vragen over, maar zou iemand mij kunnen vertellen of deze code efficienter geschreven kan worden? Of maakt het niet uit om elke keer een enkele byte te lezen met BinaryReader b.v.?
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected string GetFileSize(string fileName) { FileInfo file = new FileInfo(fileName); long fileLength = file.Length; return fileLength.ToString(); } protected string GetMD5HashFromFile(string fileName) { using (var md5 = MD5.Create()) { using (var stream = File.OpenRead(fileName)) { return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", string.Empty); } } } protected string GetSHA1HashFromFile(string fileName) { using (var md5 = SHA1.Create()) { using (var stream = File.OpenRead(fileName)) { return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", string.Empty); } } } protected string GetSHA256HashFromFile(string fileName) { using (var md5 = SHA256 .Create()) { using (var stream = File.OpenRead(fileName)) { return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", string.Empty); } } } public string GetSignatureFromFile(string fileName) { BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)); reader.BaseStream.Position = 0x0; byte[] data = reader.ReadBytes(0x2); reader.Close(); string data_as_str = Encoding.Default.GetString(data); if(data_as_str != "MZ") { data_as_str = "Unknown"; } return data_as_str; } protected string GetBytesInLastBlockFromFile(string fileName) { BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)); reader.BaseStream.Position = 0x2; byte[] data = reader.ReadBytes(0x2); reader.Close(); string data_as_hex = BitConverter.ToString(data); data_as_hex = data_as_hex.Replace("-", string.Empty); return data_as_hex; } protected string GetBlocksFromFile(string fileName) { BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)); reader.BaseStream.Position = 0x4; byte[] data = reader.ReadBytes(0x2); reader.Close(); string data_as_hex = BitConverter.ToString(data); data_as_hex = data_as_hex.Replace("-", string.Empty); return data_as_hex; } protected string GetNumberOfRelocationEntriesFromFile(string fileName) { BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)); reader.BaseStream.Position = 0x6; byte[] data = reader.ReadBytes(0x2); reader.Close(); string data_as_hex = BitConverter.ToString(data); data_as_hex = data_as_hex.Replace("-", string.Empty); return data_as_hex; } protected string HeaderSizeInParagraphs(string fileName) { BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)); reader.BaseStream.Position = 0x8; byte[] data = reader.ReadBytes(0x2); reader.Close(); string data_as_hex = BitConverter.ToString(data); data_as_hex = data_as_hex.Replace("-", string.Empty); return data_as_hex; } private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "All Files|*.*"; openFileDialog1.Title = "Select a File"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog1.FileName; textBox2.Text = GetFileSize(openFileDialog1.FileName); textBox3.Text = GetMD5HashFromFile(openFileDialog1.FileName).ToLower(); textBox4.Text = GetSHA1HashFromFile(openFileDialog1.FileName).ToLower(); textBox5.Text = GetSHA256HashFromFile(openFileDialog1.FileName).ToLower(); textBox6.Text = GetSignatureFromFile(openFileDialog1.FileName); textBox7.Text = GetBytesInLastBlockFromFile(openFileDialog1.FileName); textBox8.Text = GetBlocksFromFile(openFileDialog1.FileName); textBox9.Text = GetNumberOfRelocationEntriesFromFile(openFileDialog1.FileName); textBox10.Text = HeaderSizeInParagraphs(openFileDialog1.FileName); } } } }

[C# | Windows 10] Snelkoppeling vastpinnen aan taakbalk

14-09-2015 discussie 16
Achtergrond

In n van mijn applicaties (MicroSE JumpIt) gebruik ik een functie waarmee snelkoppelingen automatisch aan de taakbalk "vastgepind" kunnen worden. In deze applicatie kan je lijstjes "profielen" maken om snelkoppelingen aan de taakbalk te maken. (Ook wel JumpLists genomend). Via de applicatie kan je een profiel met een knopje op de taakbalk vastpinnen.

Hiervoor gebruik ik de volgende code:
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 public static void PinUnpinTaskBar(FileInfo fileInfo, bool pin) { if (!fileInfo.Exists) throw new FileNotFoundException(fileInfo.FullName); // create the shell application object var shellApplication = new ShellClass(); string path = fileInfo.DirectoryName; string fileName = fileInfo.Name; Folder directory = shellApplication.NameSpace(path); FolderItem link = directory.ParseName(fileName); var verbs = link.Verbs().OfType<FolderItemVerb>(); foreach (var v in verbs) { var n = v.Name.Replace(@"&", string.Empty).ToLower(); if (pin && pinItems.Contains(n) || !pin && unpinItems.Contains(n)) { v.DoIt(); } } shellApplication = null; }
Dit werkt perfect in Windows 7, 8, 8.1...

Het probleem

Het werkt niet in Windows 10. Op regel 20 hierboven wordt gecontroleerd op een shell item met de naam "Pin to taskbar" of "Unpin from taskbar" En in de verkenner wordt deze ook netjes getoond. Alleen de API geeft deze niet terug. Er is ook geen ander item in de lijst met vergelijkbare functionaliteit.

Dit zijn de Verbs die de Windows Shell teruggeeft:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 &Open Open file locat&ion Run as &administrator Troubleshoot compatibilit&y &Pin to Start Restore previous &versions Cu&t &Copy Create &shortcut &Delete Rena&me P&roperties
Wel een Pin to Start, maar geen Pin to Taskbar.

Mijn vraag
Weet iemand een oplossing voor het probleem? Alles wat ik op google heb gevonden is de bovenstaande code. Maar dat werkt niet meer op Windows 10.

[asp.net] waar het beste cache inladen?

09-08-2015 discussie 9
Beste mensen,

Ik heb een vrij redelijke webapp in asp.net. Deze maakt gebruik van data uit een database, en een deel daarvan is wat lastig daar uit te halen, en is redelijk statisch

Dit doe ik dus elke x minuten in een apparte thread en dat cache ik in System.Web.Caching.Cache

Ik heb nu een werkende situatie, maar ben daar niet zo tevreden over, dit om twee redenen

1. Ik start nu een thead die x minuten wacht, een taak uitvoert, weer wacht etc.
C#:
1 while (true) { /* shizzle */ }
Dit zorgt ervoor dat 1 thread 99% van ze tijd uit ze neus zit te vreten. Die thread zou ik liever willen returnen naar de threadpool.

2. Ik start de thread in de application start (middels global.asax)
Dit heeft echter als nadeel, dat wanneer de database even een hickup heeft, of er ergens anders iets fout gaat in het update proces van die cachegegeven, mijn applicationpool stopt.
Deze moet ik dan weer met de hand starten.. op alle servers..


Kortom, ik zit mij hier zo een beetje af te vragen hoe jullie dat doen.
Is er een standaard manier voor? hebben jullie het ook zelf geknutseld? zijn er best practises?

KAKU raspberry pi2 windows iot

05-08-2015 discussie 3
Een aantal weken terug heb ik een raspberry pi2 aangeschaft en hier windows 10 IoT core opgenstalleerd.
Zelf werk ik altijd met C# en was dus erg nieuwsgierig naar de universal apps. Aangezien een raspberry pi is uitgerust met GPIO pinnen en dit ondersteund wordt in de universal apps was een stoplicht achtig systeempje met ledjes al gauw geboren .

Thuis heb ik ook een aantal lichten die geschakeld worden middels een kaku dimmer en was dus al snel het idee geboren om deze te gaan schakelen middels een applicatie. Echter heb ik totaal geen verstand de 433 Mhz zenders en ontvangers. Nu is de vraag of er al meerdere mensen hiermee aan het experimenteren zijn geweest in .NET applicaties en er dus mensen zijn die dit aan de praat hebben gekregen?

Beginnend met c# maar weet niet waar te beginnen

08-07-2015 discussie 14
Ik ben Dennis ik ben 18 jaar en ik doe de opleiding applicatie ontwikkeling in Breda.
ik zit nu in mijn eerste jaar en leer op mijn opleiding c#.
Ik ben nieuw op dit forum en hoop dat jullie me uit de brand kunnen helpen.

Nu zit ik met het volgende probleem, op mijn opleiding leer ik de basis van c# en dit vind ik geweldig.
Ik snap dan eigenlijk ook alles wat er wordt uitgelegt hoe een for loop in elkaar steekt of hoe je een class aan maakt etc.
Maar als ik nu zelf moet beginnen met een programma te schrijven of zelf echt iets wil maken heb ik geen idee waar ik moet beginnen.
Ik denk dat ik alles individueel wel begrijp dus een for loop etc. Maar dan zelf van iets niets maken ik heb geen idee waar ik dan moet beginnen of wat de logica er achter is.

Ik heb zelf al wat boeken gelezen en wat tutorials opgezocht maar deze leggen alleen de functies van c# uit wat een for loop doet bijvoorbeeld en dat begrijp ik wel.

Ik hoop dat ik een beetje duidelijk ben want ik weet ook niet hoe ik mijn probleem het beste kan verwoorden.

Ik hoor graag van jullie !

[EF] Entities zijn "modified" zonder wijzigingen

08-07-2015 discussie 10
Dag

Ik heb op dit moment een gek probleem met het volgende stukje code:
C#:
1 2 3 4 5 6 7 var foos = await this.AppContext.Foos .Where(s => s.SomeEnum == this.SomeEnum) .OfType<T>() .Include(s => s.ListOfThings) .Include(s => s.ListOfThings.Select(a => a.ItemOfThing) .Include(s => s.SingleItem) .ToListAsync();
Na het ophalen van deze entities staan alle Things in ListOfThings gemarkeerd als "Modified" in de state manager. Zonder dat ik er iets aan wijzig dus. Dat is al gek.
Het probleem is dat ik bij het opslaan daarna een welbekende fout krijg:quote:The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.Deze fout kreeg ik eerst na wijzigingen, maar na wat testen dus ook zonder enige wijziging gemaakt te hebben!
Als ik voor elke Thing de state in een poging de entities te negeren op Unchanged zet gaat dat ook fout, met dezelfde melding

Ik snap er kort samengevat dus helemaal niets meer van...

[c#] nieuwe instantie obj in loop die vooraf is gedefinieerd

30-06-2015 discussie 7
Ik zit waarschijnlijk met een heel dom probleem, maar hey ik kom vanuit PHP hier naar toe

In elk geval heb ik een loop, die wat dingen doet met "outputDocument". Nu kan het echter zo zijn dat ik op een gegeven moment "klaar" ben, en dus opnieuw wil beginnen met deze class. Mocht ik hem nu initiren vr de loop, dan kan ik hem niet opnieuw aanroepen omdat hij dan buiten de scope valt...
Ik heb nu gewoon een dikke brainfart over hoe ik dit nu ga fixen..
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public void splitPDF(string filename) { PdfDocument inputDocument = PdfReader.Open(filename, PdfDocumentOpenMode.Import); string name = Path.GetFileNameWithoutExtension(filename); PdfDocument outputDocument = new PdfDocument(); for (int idx = 0; idx < inputDocument.PageCount; idx++) { if (splits.Contains(idx)) { outputDocument.Save(saveDirectory + fileName); // Hier zou dan eigenlijk weer een nieuwe instantie aangemaakt moeten worden zoals // PdfDocument outputDocument = new PdfDocument(); // maar dat mag niet } else { outputDocument.AddPage(inputDocument.Pages[idx]); } } }
Oh ik heb wel wat dingen geprobeerd maar dat werkt allemaal niet.
code:
1 2 3 4 outputDocument = null; outputDocument.Dispose(); outputDocument.Close(); // etc.
In de class (PDFSharp) zit ook niet iets om de pages eruit te kunnen halen c.q. te clearen.

[C#] PDF document lezen voor specifiek 'teken'

29-06-2015 discussie 16
Ik ben even met een hobby projectje bezig en in het kort is het de bedoeling dat ik een globale dir blijf controleren voor nieuwe PDF's. Vervolgens moet ik checken of er in dat PDF een specifieke pagina is met bijvoorbeeld een vooraf gedefinieerd woord/teken/plaatje (hoe of wat het word maakt niet uit).
Indien er zo'n pagina is, dan wordt het PDF bestand daarop gesplitst, en uiteraard valt die specifieke scheidingspagina in het niet

Nu heb ik gewoon de basis al klaar en loop ik door de PDF's heen, maar het 'probleem' is dat het altijd ingescande PDF's zijn. Oftewel je kunt niet zomaar 'tekst' lezen. Immers is het eigenlijk een plaatje en geen digitaal document.

Ik loop nu eigenlijk een beetje vast op hoe ik nu verder moet gaan. Ik wil liever niet het wiel opnieuw uitvinden en m'n C# kennis is gewoon miniem. Waar ik zelf aan zit te denken is dat het 'schutblad' een tekst bevat met een bepaalde grootte zodat ik deze dan kan vergelijken als een image. Het andere waar ik aan dacht is een barcode. Ik ga er vanuit, al helpt google hierin niet echt; dat dit relatief gezien makkelijk te parsen moet zijn.

Hebben jullie wat pointers waar ik naar kan kijken, of domweg een voorbeeld van iemand die het zelfde wil/doet?

[C#] Serial port leesprobleem

28-06-2015 discussie 17
Hallo,

Voor school moeten we een project maken waarbij een microcontroller, in ons geval een stm32f051, gekoppeld moet worden aan een computer applicatie.
Wij hebben ervoor gekozen dat de microcontroller ongeveer 30keer per seconde informatie stuurt naar de computer en de computer leest dit dan ook 30 keer per seconde uit.
Nu werkte dit eerst goed, zal wel niet de mooiste oplossing zijn geweest maar het werkte. Echter is er nu iets veranderd waardoor die niet meer goed loopt waarvan ik geen idee heb wat er is veranderd en waarom (Helaas hebben we daarvoor geen versiebeheer gebruikt... )

Het probleem:
De C# applicatie leest de poort uit, de eerste keer komt daar het volgende uit: 1 50 50 0 0 0 100 200 4
Een totaal van 9 bytes dus waarbij de 1 en de 4 altijd vast moeten blijven.
Eerst schoof elk karakter steeds n plekje op, waardoor die als het ware begon te lopen.
Nu heb ik als aanpassing de verbinding gesloten na het uitlezen en vervolgens weer openen als die weer terug komt in de functie. Mijn setup zorgt ervoor dat die nog maar 15x per seconden wordt uitgelezen maar dat is opzich niet erg, erger is dat ik dan het volgende krijg, continu: 0 1 50 50 0 0 0 100 200
De laatste byte valt dus af en de eerste veranderd in een 0.

Ik had eraan gedacht om de thread even te laten slapen na het uitlezen van de seriele poort, hem te sluiten en weer te openen en om de in-buffer te discarden maar geen van dit heeft geholpen.
C#: Mainform
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 //Init USB-Port usbPort.PortName = "COM3"; usbPort.BaudRate = 57600; usbPort.Parity = System.IO.Ports.Parity.None; usbPort.DataBits = 8; usbPort.StopBits = System.IO.Ports.StopBits.One; usbPort.WriteTimeout = 100; usbPort.ReadTimeout = 100; private void ReadSerialBus() { Thread.Sleep(5); if (usbPort.IsOpen) { try { usbPort.Read(Game.byteBuffer, 0, 8); if(Game.byteBuffer[0] != 1 && Game.byteBuffer[8] != 4) { MessageBox.Show("Buffer voor correctie:" + Game.byteBuffer[0].ToString() + "|" + Game.byteBuffer[1].ToString() + "|" + Game.byteBuffer[2].ToString() + "|" + Game.byteBuffer[3].ToString() + "|" + Game.byteBuffer[4].ToString() + "|" + Game.byteBuffer[5].ToString() + "|" + Game.byteBuffer[6].ToString() + "|" + Game.byteBuffer[7].ToString() + "|" + Game.byteBuffer[8].ToString()); txtGameTexts.AppendText("Wacht tot buffer weer klopt. \n"); while(Game.byteBuffer[0] != 1 && Game.byteBuffer[8] != 4) { usbPort.Close(); usbPort.Open(); Thread.Sleep(50); usbPort.Read(Game.byteBuffer, 0, 8); } MessageBox.Show("Buffer na correctie:" + Game.byteBuffer[0].ToString() + "|" + Game.byteBuffer[1].ToString() + "|" + Game.byteBuffer[2].ToString() + "|" + Game.byteBuffer[3].ToString() + "|" + Game.byteBuffer[4].ToString() + "|" + Game.byteBuffer[5].ToString() + "|" + Game.byteBuffer[6].ToString() + "|" + Game.byteBuffer[7].ToString() + "|" + Game.byteBuffer[8].ToString()); txtGameTexts.AppendText("Programma hervat. \n"); } usbPort.Close(); } catch (Exception e) { MessageBox.Show("Er is een probleem met de verbinding .\n+ e.ToString()); usbPort.Close(); } } else { try { usbPort.Open(); } catch(Exception e) { MessageBox.Show("Er is een probleem met de verbinding.\n" + e.ToString()); } } }

[C#] waarde uit Key in code zetten

24-06-2015 discussie 2
Gm,

Ik heb het volgende issue. Via een JS haal ik een waarde op uit een API. Middels een dictionary schrijf ik deze code weg. Nu wil ik in C# de waarde weer ophalen en er vervolgens mee aan de slag.

NB: de reden dat ik zowel JS als C gebruik is dat het om een Watchapp gaat en beiden standaards daarin gehanteerd worden.

Zo schrijf ik de code weg in JS:
//Construct a key-value dictionary
var dict = {"KEY_LOCATION" : location, "KEY_TEMPERATURE": temperature};

//Send data to watch for display
Pebble.sendAppMessage(dict);;

In deze code wil ik de waarde terug laten komen als s_num_drinks

#include "pebble.h"

#define REPEAT_INTERVAL_MS 50

// This is a custom defined key for saving our count field
#define NUM_DRINKS_PKEY 1

// You can define defaults for values in persistent storage
#define NUM_DRINKS_DEFAULT 0

static Window *s_main_window;

static ActionBarLayer *s_action_bar;
static TextLayer *s_header_layer, *s_body_layer, *s_label_layer;
static GBitmap *s_icon_plus, *s_icon_minus;

static int s_num_drinks = NUM_DRINKS_DEFAULT;

static void update_text() {
static char s_body_text[18];
snprintf(s_body_text, sizeof(s_body_text), "%u Bottles", s_num_drinks);
text_layer_set_text(s_body_layer, s_body_text);
}

static void increment_click_handler(ClickRecognizerRef recognizer, void *context) {
s_num_drinks++;
update_text();
}

static void decrement_click_handler(ClickRecognizerRef recognizer, void *context) {
if (s_num_drinks <= 0) {
// Keep the counter at zero
return;
}

s_num_drinks--;
update_text();
}

static void click_config_provider(void *context) {
window_single_repeating_click_subscribe(BUTTON_ID_UP, REPEAT_INTERVAL_MS, increment_click_handler);
window_single_repeating_click_subscribe(BUTTON_ID_DOWN, REPEAT_INTERVAL_MS, decrement_click_handler);
}

static void main_window_load(Window *window) {
Layer *window_layer = window_get_root_layer(window);

s_action_bar = action_bar_layer_create();
action_bar_layer_add_to_window(s_action_bar, window);
action_bar_layer_set_click_config_provider(s_action_bar, click_config_provider);

action_bar_layer_set_icon(s_action_bar, BUTTON_ID_UP, s_icon_plus);
action_bar_layer_set_icon(s_action_bar, BUTTON_ID_DOWN, s_icon_minus);

int width = layer_get_frame(window_layer).size.w - ACTION_BAR_WIDTH - 3;

s_header_layer = text_layer_create(GRect(4, 0, width, 60));
text_layer_set_font(s_header_layer, fonts_get_system_font(FONT_KEY_GOTHIC_24));
text_layer_set_background_color(s_header_layer, GColorClear);
text_layer_set_text(s_header_layer, "Drink Counter");
layer_add_child(window_layer, text_layer_get_layer(s_header_layer));

s_body_layer = text_layer_create(GRect(4, 44, width, 60));
text_layer_set_font(s_body_layer, fonts_get_system_font(FONT_KEY_GOTHIC_28_BOLD));
text_layer_set_background_color(s_body_layer, GColorClear);
layer_add_child(window_layer, text_layer_get_layer(s_body_layer));

s_label_layer = text_layer_create(GRect(4, 44 + 28, width, 60));
text_layer_set_font(s_label_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
text_layer_set_background_color(s_label_layer, GColorClear);
text_layer_set_text(s_label_layer, "of drinks on the wall");
layer_add_child(window_layer, text_layer_get_layer(s_label_layer));

update_text();
}

static void main_window_unload(Window *window) {
text_layer_destroy(s_header_layer);
text_layer_destroy(s_body_layer);
text_layer_destroy(s_label_layer);

action_bar_layer_destroy(s_action_bar);
}

static void init() {
s_icon_plus = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_ACTION_ICON_PLUS);
s_icon_minus = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_ACTION_ICON_MINUS);

// Get the count from persistent storage for use if it exists, otherwise use the default
s_num_drinks = persist_exists(NUM_DRINKS_PKEY) ? persist_read_int(NUM_DRINKS_PKEY) : NUM_DRINKS_DEFAULT;

s_main_window = window_create();
window_set_window_handlers(s_main_window, (WindowHandlers) {
.load = main_window_load,
.unload = main_window_unload,
});
window_stack_push(s_main_window, true);
}

static void deinit() {
// Save the count into persistent storage on app exit
persist_write_int(NUM_DRINKS_PKEY, s_num_drinks);

window_destroy(s_main_window);

gbitmap_destroy(s_icon_plus);
gbitmap_destroy(s_icon_minus);
}

int main(void) {
init();
app_event_loop();
deinit();
}

[C#] Sizen van Form op Tabcontrol

11-06-2015 discussie 9
Ik heb een main form. Met een toobar een treeview en een tabcontrol.

Als de gebruiker in de treeview op een node clickt, wordt er bijbehoren een form gecreerd op de tabcontrol.
Dit werkt goed.

Echter als ik het mainform gaat resizen dan gaat het subform niet mee.
Er zijn veel mogelijk om dit voor elkaar te krijgen. Dock, Anchor etc..

Welke zou ik het beste kunnen gebruiken ?
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { CurrentForm = new DataForm(); CurrentForm.TopLevel = false; tabControl1.TabPages[0].Controls.Add(CurrentForm); CurrentForm.Dock = DockStyle.Fill; CurrentForm.WindowState = FormWindowState.Maximized; CurrentForm.FormBorderStyle = FormBorderStyle.None; CurrentForm.Show(); }

Length van GZipstream bepalen?

09-06-2015 discussie 1
Ik wil in .NET data streamen vanuit een file naar AWS S3. Dat probeer ik op de volgende manier te bereiken:

1 Ik lees een file regel voor regel uit met yield return
2 Ik schrijf elke regel naar een MemoryStream
3 Zodra de MemoryStream groter is dan 5MB (hij is niet exact 5MB maar meestal net iets meer omdat ik hele strings uitlees) upload ik een part naar AWS (het is een multi-part upload)
4 Vervolgens set ik de Length van de stream op 0 en ga ik weer verder met naar de stream schrijven van waar ik gebleven was
5 Ik herhaal stap 3 en 4 zo vaak als nodig is tot alle parts geupload zijn

Nu moet ik de data eigenlijk GZippen. Wat ik daarvoor geprobeerd heb is de MemoryStream te encapsulaten in een GZipStream. Het probleem is echter dan je van een GZipStream niet meer de Length op kan vragen en dus niet kan bepalen wanneer ik moet uploaden naar AWS. Ook heb ik dus geen file position (de lengte van de inhoud van de stream).

Dit is de relevante code:
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 using (var aws = new AmazonS3Client(_configuration.AccessKeyId, _configuration.AccessKeySecret, RegionEndpoint.EUWest1)) { Stream stream = new MemoryStream(); try { if (_gzip) { stream = new GZipStream(stream, CompressionMode.Compress); } // initiate multi-part upload int partNumber = 1; long filePosition = 0; foreach (string row in GetData()) { stream.WriteString(row); long length = stream.Length; if (length > 5 * 1024 * 1024) { FlushToS3(aws, initResponse.UploadId, partNumber, filePosition, stream); partNumber++; filePosition += length; stream.SetLength(0); } } // finish multi-part upload } finally { stream.Dispose(); } }
Weet iemand een trucje om de lengte van de GZipStream te bepalen, of een andere manier om mijn probleem op te lossen?

Beginnen met C# .NET

26-05-2015 discussie 2
Beste,

Ik zal me even voorstellen ik ben een jonge van 16 jaar en ik ben sinds een paar dagen zeer geintreseerd in C# .NET. Ik ben wat simpele programma's aan het maken zoals keylogger( gebruikt op een vriend ) een mp3 speler een Encrypter. Maar mijn vraag was of iemand mij wat tips kan geven zodat ik deze mooie programmeer taal onder de knie kan krijgen.

Alvast bedankt,

Op zoek naar library voor aanroepen van functies in 2 talen

19-05-2015 discussie 9
Een tijd geleden heb ik ooit een library gebruikt voor het aanroepen van functies vanaf SCALA naar C#. Deze library was niet alleen voor deze 2 talen bedoeld maar kon in veel verschillende programmeer talen gebruikt worden. Je kon met deze library op een makkelijke manier vanuit een ander programma op een andere computer een functie/methode aanroepen binnen je eigen programma op je eigen computer.

Nu ben ik alweer een tijd op zoek naar deze library maar heb zelf geen idee wat de naam hiervan was. De hierboven beschrijving is redelijk vaag maar ik hoop toch dat iemand dadelijk zegt "Hey, ik weet precies wat je bedoeld!".

Gr.

FrietzakNL

[c#][MVC] nested model na post null

18-05-2015 discussie 5
Ik heb hier al heel veel naar gezocht en ik denk dat het gewoon niet kan maar ik wil het volgende doen:

In mijn view doe ik als volgt een foreach
C#:
1 2 3 4 5 6 7 8 9 10 11 @foreach (var PostTestViewModel in Model.NestedModel) { using (Html.BeginForm("Action", "Controller", PostTestViewModel)) { //Ter test <input type="hidden" name="ObjectId" value="@Model.ObjectId" /> <input type="submit" value="Book" class="btn btn-default" /> } }
Ik heb een ViewModel "PostTestViewModel", daarin heb ik een property gedefinieerd die ook terug komt in NestedModel, deze wordt netjes gebind. Het probleem is echter dat NestedModel ook een nested Model heeft en deze is in PostTestViewModel altijd null. In de post data zie ik dan ook staan: "Namespace.PathTo.Model".

Zodra ik hidden fields ga zitten maken om elke property te setten dan worden deze wel gebind maar dat lijkt mij toch niet de bedoeling? Het zijn namelijk ook geen waardes die die in een input horen.

C#: de tekst verkrijgen van een desktop shortcut.

16-05-2015 discussie 9
Ik ben bezig met een programmaatje waarmee je de positie van alle sohortcuts op je desktop op kan slaan en die shortcuts bij wijzigingen op je desktop ook weer op de juiste locatie kan terugzetten.

Nu had ik dus ergens een stuk code gevonden die de locatie en tekst van alle sortcuts op je desktop kan achterhalen. Het gaat om de volgende code: (MSDN: How can i get desktop's icon's information ?)
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 private void button1_Click(object sender, EventArgs e) { // get the handle of the desktop listview IntPtr vHandle = FindWindow("Progman", "Program Manager"); vHandle = FindWindowEx(vHandle, IntPtr.Zero, "SHELLDLL_DefView", null); vHandle = FindWindowEx(vHandle, IntPtr.Zero, "SysListView32", "FolderView"); //Get total count of the icons on the desktop int vItemCount = SendMessage(vHandle, LVM_GETITEMCOUNT, 0, 0); this.label1.Text = vItemCount.ToString(); uint vProcessId; GetWindowThreadProcessId(vHandle, out vProcessId); IntPtr vProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, false, vProcessId); IntPtr vPointer = VirtualAllocEx(vProcess, IntPtr.Zero, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); try { for (int j = 0; j < vItemCount; j++) { byte[] vBuffer = new byte[256]; LVITEM[] vItem = new LVITEM[1]; vItem[0].mask = LVIF_TEXT; vItem[0].iItem = j; vItem[0].iSubItem = 0; vItem[0].cchTextMax = vBuffer.Length; vItem[0].pszText = (IntPtr)((int)vPointer + Marshal.SizeOf(typeof(LVITEM))); uint vNumberOfBytesRead = 0; WriteProcessMemory(vProcess, vPointer, Marshal.UnsafeAddrOfPinnedArrayElement(vItem, 0), Marshal.SizeOf(typeof(LVITEM)), ref vNumberOfBytesRead); SendMessage(vHandle, LVM_GETITEMW, j, vPointer.ToInt32()); ReadProcessMemory(vProcess, (IntPtr)((int)vPointer + Marshal.SizeOf(typeof(LVITEM))), Marshal.UnsafeAddrOfPinnedArrayElement(vBuffer, 0), vBuffer.Length, ref vNumberOfBytesRead); string vText = Encoding.Unicode.GetString(vBuffer, 0, (int)vNumberOfBytesRead); string IconName = vText; //Get icon location SendMessage(vHandle, LVM_GETITEMPOSITION, j, vPointer.ToInt32()); Point[] vPoint = new Point[1]; ReadProcessMemory(vProcess, vPointer, Marshal.UnsafeAddrOfPinnedArrayElement(vPoint, 0), Marshal.SizeOf(typeof(Point)), ref vNumberOfBytesRead); string IconLocation = vPoint[0].ToString(); //Insert an item into the ListView this.listView1.Items.Add(new ListViewItem(new string[]{IconName,IconLocation})); } } finally { VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE); CloseHandle(vProcess); } this.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); } }
Met deze code kan ik wel de locatie van de shortcuts verkrijgen maar de tekst van de shortcut verkrijgen lukt niet. De tekst wordt hier verkregen (zie ook de code hierboven):
code:
1 2 3 string vText = Encoding.Unicode.GetString(vBuffer, 0, (int)vNumberOfBytesRead); string IconName = vText;
Tijdens het debuggen zie ik dat de string: vText de volgende waarde heeft:
/0/0/0/0/0/0/0/0 enz.

De juiste tekst wordt dus niet verkregen en er gaat dus iets fout bij de functie: Encoding.Unicode.GetString(.......

Echter weet ik niet precies wat er fout gaat. Iemand een idee?
En weet iemand ook hoe je de locatie (folder path) van een 'desktop shortcut' kan achterhalen?

[.NET SignalR] Real-time synchronizatie tussen clients

12-05-2015 discussie 10
Ik ben bezig met een applicatie die door een aantal clients tegelijk gebruikt zal worden, en ik wil graag alle clients in (min of meer) real-time met elkaar synchronizeren. Denk bijvoorbeeld aan Google Docs waar je met meerdere mensen tegelijk kunt werken aan een excel sheet oid (maar dan iets eenvoudiger). Ik heb echter twee ideen om de synchronizatie te doen maar kan niet kiezen welke nou beter is.


Laat ik beginnen met een heel erg uitgeklede versie van wat ik wil bereiken, hopelijk is dat genoeg als uitleg, zo niet dan kan ik meer details geven. Ik werk in .NET (C#) en wil graag SignalR gebruiken voor de communicatie, maar voor deze vraag is dat eigenlijk niet zo van belang.

De applicatie heeft een lijst met data. Deze lijst met data moet gesynchronizeerd worden naar alle andere clients. Elke client kan items toevoegen aan de lijst, of bestaande items bewerken, of zelfs verwijderen. Zodra een item toegevoegd, bewerkt of verwijderd wordt moet dat ook in real time (nou ja, toch wel binnen een seconde) bij alle andere clients automatisch updaten.

Naast alle clients moet er natuurlijk ook een server zijn die de communicatie tussen de clients regelt. Tenminste, dat lijkt me de meest logische oplossing. Clients praten niet met elkaar, maar praten altijd met de server, en de server kan dan weer met alle andere clients praten.

Momenteel is de opzet van de client/server communicatie als volgt:De server heeft als enige de definitieve lijst met data welke altijd correct geacht wordt. Dit noem ik de 'State' van de applicatie. In het echt zit er veel meer in dan alleen deze lijst met data maar voor nu is dit een ok voorbeeld. Clients sturen incremental updates van de data naar de server. Bijvoorbeeld: een nieuw item in de lijst, of een bewerkt item, of een id om te verwijderen. De server update dan zijn eigen State (voegt het item toe, bewerkt het item, etc). De server stuurt dan naar alle clients de nieuwe State. Clients ontvangen de state en updaten hun applicatie (de lijst met data) om de nieuwe data te tonen.Clients hebben dus altijd een kopie van de State, en kunnen alleen updates sturen en nooit een geheel nieuwe State. De server heeft altijd de echte State en stuurt deze in zijn geheel naar alle clients.

De voordelen van deze opzet leken mij:Clients kunnen binnenvallen wanneer ze willen en krijgen meteen de gehele State, zijn dus meteen up-to-date. Berichten van Client naar Server mogen gemist worden (connectie problemen ofzo). De server State wordt dan niet geupdate (update gaat verloren) en de andere clients krijgen de update niet door, maar zodra er een nieuwe update komt krijgen alle clients weer dezelfde State en lopen ze niet 'van elkaar weg'. In andere woorden, de clients zijn altijd (lees: na elke state update) compleet in sync en lopen nooit uit sync omdat ze altijd de gehele state krijgen. Hoogstens gaat er een update verloren maar dat is niet zo erg.Het grootste nadeel loop ik echter al snel tegenaan, en dat is dat de State vrij groot kan worden. Omdat de gehele lijst met data elke keer opgestuurd moet worden naar alle clients gaat dit nooit schalen en met een lange lijst met data zal het vast in de soep lopen (updates duren te lang etc).


Het alternatief dat ik kan bedenken is om de updates vanuit de server naar de client ook als 'incremental' te doen. Oftewel: een client stuurt een nieuw item, en de server stuurt alleen dat nieuwe item door aan alle andere clients. Dit houdt de communicatie altijd kort, zelfs als de lijst enorm lang is (omdat alleen de updates aan de lijst doorgestuurd worden).

Hier zie ik echter een groot nadeel: clients kunnen 'out of sync' gaan lopen als ze een update missen bijvoorbeeld. Die update komt dan nooit meer aan en omdat ze nooit de hele state ontvangen komt dat ook nooit meer goed. Er zal dus op een of andere manier af en toe gechecked moeten worden of de clients nog in sync zijn (bijvoorbeeld een hash van de state rondsturen en kijken of die nog hetzelfde is). Maar als dan blijkt dat een client niet meer in sync loopt zal toch echt de hele state opgestuurd moeten worden, en ben ik weer terug bij het probleem in mijn eerste idee. Ook als een client later binnenkomt zal hij de state moeten ontvangen.

Dit lijkt me echter minder erg dan elke keer de gehele state opsturen. Een client die laat binnenkomt kan best even een wachtscherm krijgen terwijl de gehele state opgehaald wordt, en in het extreme geval dat iemand niet meer in sync loopt is dat ook niet zo'n punt. Het tweede idee lijkt me dus uiteindelijk beter. Echter volgens mij is dit ook veel ingewikkelder te programmeren...

Echter vraag ik me af hoe dit "normaal" in zijn werk gaat. Dit probleem lijkt me al lang en breed opgelost, want volgens mij moet elke online game (om maar iets te noemen) hier ook mee om gaan. Ik wil voorkomen dat ik het wiel opnieuw ga uitvinden, echter kan ik maar heel weinig informatie vinden over dit soort onderwerpen. Alles wat ik kan vinden gaat meteen veel te diep door in dingen als lag compensatie etc. Daar ben ik niet zo in geinteresseerd. Ik vind het prima als een client een delay van 1 seconde heeft oid.


Long story short: ik kan niet kiezen uit twee methodes om clients te synchronizeren:

1. Clients sturen incremental updates, server stuurt de gehele nieuwe state door aan alle clients.
2. Clients sturen incremental updates, server stuurt incremental updates naar alle clients. Verder geen synchronizatie tussen clients (en dus moet ik gaan checken of de state nog wel in sync is).

Heeft iemand input?
Resultaten per pagina: 25 | 50 | 100
1 2 3 ... 28


Huawei Nexus 6P Apple iPad Pro WiFi FIFA 16 Samsung Galaxy S7 Fallout 4 Apple iPhone 6C Athom Homey LG G5

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True