Suchergebnisse
Suchergebnisse 1-30 von insgesamt 1.000. Es gibt noch weitere Suchergebnisse, bitte verfeinern Sie Ihre Suche.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
-
@Link Danke für das ausführliche Feedback! Hab länger nicht dran gedacht, hier reinzuschauen deshalb hat's bisschen gedauert. Ich habe einiges umgesetzt aber bei ein paar Sachen hab ich Einwände. Allgemein möchte ich anmerken: Das Programm war ursprünglich mehr als "schnell zusammengeschriebenes Tool" gedacht, mit dem Hintergedanken, dass wenn ich eine Idee besonders nützlich finde, ich sie eh relativ einfach reinprogrammieren kann. Der Code ist durch das, was ich schon dazugebaut habe, bereits …
-
Name: Replace Clipboard Kurze Beschreibung: Wenn Text in die Zwischenablage kopiert wird, verändert das Programm den Text automatisch laut eingestellten Regeln. Screenshot: vb-paradise.de/index.php/Attachment/53547/vb-paradise.de/index.php/Attachment/53548/ Ausführliche Beschreibung: Ein Freund hatte folgende Situation: Er lässt sich Telegram-Chats immer vorlesen. Ein Programm überwacht die Zwischenablage und füttert neue Texte einfach an die Sprachausgabe. Er markiert die gewünschten Nachrichte…
-
Zitat von home38: „ Imports Windows.Devices.Bluetooth Imports Windows.Devices.Bluetooth.GenericAttributeProfile Imports Windows.Devices.Enumeration Imports Windows.UI.Core “ Naja, das sind ja nur die Imports, die sagen, dass du den Inhalt dieser Namespaces in der aktuellen Datei verwenden kannst, ohne jedesmal den kompletten Namespace auszuschreiben. Also z.B: VB.NET-Quellcode (18 Zeilen) In den importierten Namespaces ist nur dann was zu finden, wenn auf Assemblies verwiesen wird, die irgendwas…
-
Encoding.GetString (und die Umkehrung davon, also .GetBytes) hat Überladungen, bei denen man Offset und Länge angeben kann: Encoding.UTF8.GetString(rmBytes, 0, 43) Übrigens: Das 43Bytes-Array hat nicht 43 Plätze sondern 44. Bei VB ist das eine Altlast, dass man den höchsten Index angibt, und nicht die Länge. Dim _43Bytes(43 - 1) As Byte wäre richtig.
-
Bei welchem Feld änderst du zwischen bool und uint und welches Feld verschiebt sich dadurch? Kannst du ein Minimalbeispiel erstellen, das das Problem reproduziert? Also am besten nur zwei Felder. Übrigens Marshal.SizeOf(typeof(bool)) ist 4, nicht 1! Wenn du dich auf LayoutKind.Sequential verlässt, wird das sicher so angewendet.
-
Da hab ich eine Frage: Wenn du die Werte, die bis 65504 gehen (vermutlich auch bis einschließlich 65535, weil das (2^16)-1 wäre), unverändert behalten willst, dann musst du 16 bit pro Kanal verwenden. Willst du das? Ich weiß aus dem Stegreif nicht, welche Dateiformate 16 bit pro Kanal encodieren können. Oder willst du es runterrechnen auf 8 bit pro Kanal? Das wäre beim Speichern kein Problem, du verlierst aber Tiefe bei deinem Bild. Und noch eine Frage: Sind das nur Graustufen? Oder hast du da a…
-
Ist das Byte-Array, das du vorliegen hast, das gleiche oder das selbe wie das in der Liste? Also sind es zwei verschiedene Arrays, die die gleichen Werte beinhalten? Oder ist es ein und das selbe Array? In ersterem Fall muss man die Werte der Arrays vergleichen. Dafür gibt's die praktische SequenceEqual-Funktion: VB.NET-Quellcode (4 Zeilen) In letzterem Fall kannst du direkt Array.IndexOf verwenden: VB.NET-Quellcode (4 Zeilen)
-
Ich vermute ins Blaue, dass der Compiler bei query2 weiß, dass der Where-Ausdruck einen Boolean ergeben muss und deshalb die Extension mit dem Nullable(Of Boolean) garnicht erst in Betracht zieht. Mal probieren... VB.NET-Quellcode (32 Zeilen) Lag wohl richtig. Dekompiliert man das, sieht man, dass bei query2 GetValueOrDefault vom Compiler eingefügt wird: CIL-Quellcode (61 Zeilen)
-
Also ich muss schon sagen, C# ist in den neueren Sprachversionen echt unleserlich geworden. Du bist schon in einer Methode (public static void DeleteAssociations) drin und deklarierst da drin eine weitere Methoe (void DeleteValue). Das wurde irgendwann mal erlaubt. Die Methode ist dann von außen nicht sichtbar. In älteren Versionen geht das nicht. Du musst die innere Methode rausschieben. Also nicht so: C#-Quellcode (6 Zeilen) Sondern so: C#-Quellcode (7 Zeilen) Und vermutlich sollte sie dann pr…
-
@ErfinderDesRades: Das jetzt nicht, um gegen dich zu argumentieren, sondern weil ich die Geschichte sehr amüsant fand. Ein Freund hatte ein Programm, das Daten aus 'ner SQL-Datenbank holt und als XML exportiert. Hat pro Job ca. eine Stunde gedauert und ca. 20MB XML produziert. Er hat die Stringkonkatenationen (und ja, es ist in .NET unsinnig, XML durch Stringkonkatenation zu generieren) durch einen StringBuilder ersetzt und das hat die Jobs auf 3 Sekunden reduziert. Also... wenn man wirklich wir…
-
Übrigens: Zitat von Farliam: „So weit so klar, aber wenn mann sicher ist, dass die Variabel auf die man zeigt bereits vorhanden ist und einen Wert hat, warum benötigt man dann eine Null initialisierung“ Benötigt man nicht. Du kannst den Pointer auch einfach uninitialisiert lassen. Dann zeigt der Pointer irgendwo auf irgendeinen x-beliebigen Speicherbereich. Wenn du dann drauf zugreifen würdest, könnte es passieren, dass du zufällig irgendeinen existiernden Wert aus dem Speicher liest oder was üb…
-
Wenn es darum geht, einfach nur auf ein Graphics-Objekt einen Punkt zu zeichnen, dann zeichne ein Rechteck mit einer Höhe und Breite von 1. Wenn du auf eine Bitmap zeichnest und viele Punkte zeichnen willst, kannst du mit LockBits arbeiten. Da hast du dann ein Byte-Array, das die Pixeldaten der Bitmap beinhaltet. Das ist umständlich aber schnell. Wenn du wirklich nur ein einziges Pixel einfärben willst, dann kannst du SetPixel verwenden. Das verwendet intern auch LockBits, aber macht bei jedem A…
-
Die architektonische Lösung: Warum musst du überhaupt casten? Wenn ListServer eine Liste von gewissen Dingen sein soll, dann sollte die Klasse vermutlich generisch sein: VB.NET-Quellcode (3 Zeilen) Dann kannst und willst du nur die Objekte reinschmeißen und rausholen, die du brauchst. Die pragmatische Lösung: Garnicht. Die ausführliche Lösung: Ein Ausdruck vom Typ List(Of Object) kann nie zu List(Of String) gecastet werden, und umgekehrt. Beispiel: VB.NET-Quellcode (21 Zeilen) Der zweite Aufruf …
-
Zitat von Gonger96: „Warum das so ist k.A.,“Siehe:Zitat von Niko Ortner: „Bei C deklarierst du mit int x[10]; quasi "10 Variablen vom Typ int".“ @Marcus Gräfe Um die Verwirrung zu vervollständigen: Es gibt auch die Syntax Dim x(0 To 9) As Integer bzw. Dim x = New Integer(0 To 9) {}. Also 0 bis 9 sind die gültigen Indices. x.UpperBound ist 9 und x.LowerBound ist 0. Jetzt denkt man sich vielleicht: "Kann LowerBound auch was anderes außer 0 sein?" "Well, yes, but actually no." Dim x(4 To 9) As Inte…
-
Zitat von dive26: „Sorry, aber ist das nicht i-Tüpflerei ?“ Naja, ich finde, es ist schon wichtig, diesen Unterschied im Konzept zu kennen. Besonders wenn man als Anfänger noch nicht so gut weiß, wie Objekte und Arrays und Variablen und das alles zusammenspielen, finde ich es gut, wenn die Syntax einheitlich und nicht verwirrend ist. Und es gibt wie gesagt sehr viele Ausnahmen von dieser Syntax. Bzw. müsste man sagen, dass diese Syntax die Ausnahme ist: Funktionen, die ein Integer-Array zurückge…
-
Zitat von Marcus Gräfe: „Für mich als VB6-Entwickler ist das völlig klar: Es ist ein Integer-Array.“ Richtig. Aber sieh dir die Property an, die direkt darunter steht. Sie ist mit der gleichen Syntax geschrieben. Also möchte man meinen, dass der Typ auch ein Integer-Array ist. Um es mit den Worten von Herbert Grönemeyer auszudrücken: Isses aber nicht. Denn Properties können Parameter haben: VB.NET-Quellcode (6 Zeilen) Es wäre komisch, wenn das bloße Hinzufügen eines Index zur Property plötzlich …
-
Ist da irgendwas dabei, was dir helfen könnte? Ich kenne mich mit Treiberkrams zu wenig aus, dass ich das beurteilen könnte. Ich lese da CH341W64.SYS. Die CH341DLL.DLL ist laut VirusTotal trotzdem 32 Bit. Als Workaround könntest du ein x86-Projekt anlegen, welches die Aufrufe an die DLL übernimmt. Dann müsstest du nur zwischen deinem x64-Programm und dem x86-Programm kommunizieren. In .NET könntest du damit relativ unspektakulär Remoting verwenden können.
-
VB.NET-Quellcode (5 Zeilen) ist (in deinem Fall) Äquivalent zu VB.NET-Quellcode (6 Zeilen) Das erfordert natürlich, wie die IDE bei dir anmeckert, dass es einen passenden =-Operator gibt. Der kann z.B: so aussehen: VB.NET-Quellcode (12 Zeilen) Dann wird dieser eigene Operator an der Stelle aufgerufen. Wenn du keinen solchen Operator deklarierst, weiß der Compiler nicht, wie er bei deinem Datentyp auf Gleichheit prüfen soll.
-
Bei Vergleichen wird bei x86 zuerst die linke Seite in ein Register geladen (sagen wir mal eax), die rechte Seite in ein anderes Register (sagen wir mal ebx) und dann ein CMP-OpCode ausgeführt (wäre dann CMP eax, ebx). Dabei werden die zwei Operanden subtrahiert (und das Ergebnis verworfen) und die Bits im FLAGS-Register entsprechend gesetzt. Zum Beispiel, wenn das Ergebnis 0 war, wird das ZF-Bit auf 1 gesetzt. Bei einem Carry wird das CF-Bit auf 1 gesetzt. Das SF-Bit wird auf den Wert des MSB d…
-
Zitat von VaporiZed: „CE-Property Enabled auf False setzen“ Ich stimme da @shad zu. Wenn der User anfängt, so krasse Sachen zu machen, dann kann man sowieso für nichts garantieren. Man könnte sonst auch argumentieren, dass der User im Code VB.NET-Quellcode (4 Zeilen) einfach die Prüfung rauseditieren könnte. Entweder dekompilieren und neu kompilieren, oder wie du mit CheatEngine im laufenden Prozess den Code überschreiben. Man könnte noch einen Schritt weiter gehen: Sagen wir, du hast ein Gerät …
-
Also einiges bringst du noch durcheinander. Im Fall, dass das Event SerialPort1.DataReceived in Thread A ausgelöst wird passiert folgendes: Das DataReceived-Event wird eben nicht im Thread A (auch GUI-Thread) ausgelöst, sondern in einem anderen Thread (nennen wir ihn Thread B). Wenn du einen SerialPort öffnest (SerialPort.Open), dann wird ein weiterer Thread gestartet, der sich darum kümmert, die Kommunikation über den Port abzuarbeiten. Dieser Thread löst das DataReceived-Event aus. Die SerialP…
-
2 und 3 machen nicht das Gleiche! Bei 2 wird folgendes gemacht, in dieser Reihenfolge: 1. Die Adresse von ReceivedText wird "geholt/rausgesucht" (man sagt "ausgewertet"). 2. Eine Instanz des Delegattypen SetTextCallback wird mit dieser Adresse erstellt. 3. SerialPort1.ReadExisting wird aufgerufen 4. Me.Invoke wird aufgerufen, mit der Instanz des Delegattypen und dem Ergebnis von SerialPort1.ReadExisting als Argumente. 5. (Im GUI-Thread) ReceivedText wird aufgerufen, mit dem Ergebnis von SerialPo…
-
Mir fallen da ein, zwei Kleinigkeiten im Code auf: 1. Warum Button1.PerformClick und nicht direkt den Click-Handler aufrufen? Was macht Button1 eigentlich? Gib deinen Controls aussagekräftige Namen, damit man am Name erkennen kann, wofür sie zuständig sind. 2. Wenn du zuerst TextBox1.Clear aufrufst (auch hier aussagekräftige Namen), dann ist in der TextBox ja leer. TextBox1.Text += msg fügt dem bestehenden Text am Ende mehr Text hinzu. Da in der TextBox ja kein Text mehr drin steht, kommt am End…
-
Zu Sonderzeichen: Nicht alles, was im Microsoft.VisualBasic-Namespace drin ist, ist automatisch schlecht. Für Zeilenumbrüche verwendet man Environment.NewLine. "ist das nicht vbcrlf ???" Auf Windows ja, aber siehe MSDN: A string containing "\r\n" for non-Unix platforms, or a string containing "\n" for Unix platforms. Sollte man tatsächlich mal gewisse Sonderzeichen brauchen (was bei mir erstaunlich selten der Fall ist), dann findet man die wichtigsten in Microsoft.VisualBasic.ControlChars und ni…
-
Leider kann ich dir zum eigentlichen Problem nicht wirklich weiterhelfen. Aber ich möchte folgendes trotzdem gesagt haben: Disclaimer: Ich hatte zwar Computer Security im Studium, aber das macht mich nicht automatisch zu einem Profi auf dem Gebiet. Die nachfolgenden Aussagen sind deshalb als eine auf Sachkenntnis gestützte Vermutung zu betrachten. So ein Token darf nicht vorhersehbar sein. Eine GUID ist, besonders wenn es die Version mit Zeit und MAC-Adresse ist, nicht kryptographisch sicher. Da…
-
Frage zu While Ausdruck in C
Niko Ortner - - Weitere Sprachen und sprachübergreifende Themen
BeitragMan beachte aber den Unterschied zwischen --val und val--. --val hat diese Reihenfolge: Verringere val um 1, evaluiere zu val. val-- hat diese Reihenfolge: Evaluiere zu val, verringere val um 1. Also angenommen, val hat vorher den Wert 1, dann kommt folgendes raus: --val: Verringere val um 1 (also auf 0), evaluiere zu val (also 0). val--: Evaluiere zu val (also 1), verringere val um 1 (also 0). --val heißt "pre-decrement", also "vorher verringern". val-- heißt "post-decrement", also "nachher ver…