Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Th69
Thema: intelligentes erstellen unterschiedlicher Menüs in Form
Am Gestern, im Forum: GUI: Windows-Forms

Du brauchst dann nur das UserControl (auf deutsch: Benutzersteuerelement) verstecken bzw. wieder anzeigen, es werden dann automatisch alle dadrin enthaltenen Elemente versteckt bzw. wieder angezeigt.
Als englischen Artikel habe ich Create User Control in C# Winforms Applications dazu gefunden.

Schau dir auch mal den Beispielcode in [FAQ] Assistenten/Wizards: Mit Windows Forms eine Art Frameset einer Website nachbauen an (statt dem Panel benutzt du dann ein entsprechendes UserControl).

Hilfreich kann auch folgender Artikel für dich sein: [FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls

Thema: intelligentes erstellen unterschiedlicher Menüs in Form
Am Gestern, im Forum: GUI: Windows-Forms

Hallo,

meinst du das Arbeiten im visuellen Designer oder zur Laufzeit?
Ich verstehe jedoch nicht, was du mit dem MenuStrip meinst? Über ein Menü kannst du die verschiedenen Bereiche zur Auswahl stellen, so daß der Anwender zwischen diesen wechseln kann - das Anzeigen und Verstecken mußt du jedoch selber ausprogrammieren.

Ich würde vorschlagen, du erzeugst je Bereich ein eigenes UserControl (diese kannst du auch im Designer erstellen und bearbeiten). Und dann hältst du die einzelnen UserControls in einer Liste und merkst dir jeweils die gerade Aktive in einer Eigenschaft.

Thema: Meldung verweist auf einen Pfad von einem anderen Rechner
Am Gestern, im Forum: Rund um die Programmierung

Das sind die Debug-Infos, welche beim Kompilieren mitgegeben werden.
Wenn du diese nicht benötigst, dann erstelle deine Applikation als Release und liefere keine ".pdb"-Dateien aus.

Thema: DDE ist obsolet. Welche Alternative
Am Gestern, im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

schau auch mal in Interprocess Communications (der deutsch übersetzte Artikel ist leider nicht zu verstehen).

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am Gestern, im Forum: Wünsche und Kritik

OK, schön, daß ersteres schon auf dem Wege ist.

Wenn ich Dateien aus dem Internet herunterlade, möchte ich schon direkt den passenden (angezeigten) Dateinamen haben, anstatt jedesmal diesen wieder ändern zu müssen (denn wenn alle Dateien nachher nur "attachments-..." heißen, bringt mir das nicht viel). Vllt. hilft hier Change the name of your file with – HTML5 “Download” attribute?

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am Gestern, im Forum: Wünsche und Kritik

Sollte der Forenbereich "FAQ" (und evtl. auch "Artikel") für normale Benutzer nicht besser schreibgeschützt sein (da gerade dort ein Thema fälschlicherweise eröffnet wurde)?

Außerdem ist mir noch eine andere Sache aufgefallen:
Beim Herunterladen von Anhängen wird nicht der angezeigte Dateiname genommen, sondern "attachment-...", so daß man selber den Dateinamen beim Abspeichern wieder ändern muß.

Thema: anderes Program korrekt beenden
Am im Forum: Grundlagen von C#

Bei einem GUI-Programm kann man Process.CloseMainWindow (sowie anschließend Process.Close) aufrufen. Das startende Programm muß sich also dessen Process-Instanz merken.

Thema: Mithilfe von .NET+Android auf Synology MariaDB zugreifen
Am im Forum: Netzwerktechnologien

Ja, du benötigst dazu einen HTTP Server.
Gefunden habe ich noch folgende Links:
- Wie hoste ich eine Website auf meinem Synology NAS?
- How Do I use Synology Web Station? (bes. "Dynamic Website")
Als Programmiersprache scheint (nur?) PHP unterstützt zu werden.

Weitere Stichworte zum Nachlesen: HTTP/Web/REST API, z.B. Einfache REST-API mittels PHP

Thema: Mithilfe von .NET+Android auf Synology MariaDB zugreifen
Am im Forum: Netzwerktechnologien

Soll deine App denn nur bei dir im lokalen Netzwerk funktionieren oder willst du Zugriff auch über das Mobilfunknetz auf die Datenbank haben?

Es gab neulich erst folgendes Thema: XAMARIN MySQL Datenbankverbindung wirft Exception - beachte besonders die Hinweise von Abt.

Thema: PDF-Formularfelder mit Werten befüllen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Möchtest du gleichzeitig die PDF-Datei lesen und beschreiben? Das wird wohl so nicht direkt funktionieren - gib mal als 2. Parameter für PdfStamper einen eigenen Output-FileStream an, s.a. C# (CSharp) iTextSharp.text.pdf PdfStamper Beispiele.
Dann sollte auch das File.Copy überflüssig sein.

Thema: PDF-Formularfelder mit Werten befüllen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

In welcher Zeile genau erhältst du denn die Exception?
Durch die using-Anweisung in Zeile 20 sollte pdfStamper.Close() überflüssig sein (aber es sollte trotzdem keine Exception geworfen werden).
Analog solltest du beim Zugriff auf PdfReader pdfReader besser ebenfalls eine using-Anweisung benutzen.

Thema: "FolderBrowserDialog" funktioniert nicht bei Ondrive-Backup??
Am im Forum: Grundlagen von C#

Einfach das NuGet-Package ShellFileDialogs zu deinem Projekt hinzufügen und dann dessen ShellFileDialogs.FolderBrowserDialog benutzen.

Falls du noch nie vorher mit NuGet gearbeitet hast, dann lies Schnellstart: Installieren und Verwenden eines Pakets in Visual Studio (nur Windows) (s. "Hinzufügen des NuGet-Pakets „Newtonsoft.Json“", nur daß du dort dann das andere Paket suchst und auswählst).

Thema: DPI ind App-Eigenschaften ändern
Am im Forum: GUI: Windows-Forms

Schau mal in Unterstützung hoher DPI-Werte in Windows Forms, ob dir die Einstellungen dort helfen.

Thema: "FolderBrowserDialog" funktioniert nicht bei Ondrive-Backup??
Am im Forum: Grundlagen von C#

Hallo,

dazu kannst du das "Windows API Code Pack" benutzen (gibt es in zwei Versionen, einmal für .NET Framework und einmal für .NET [Core]).
Eine abgespeckte Version, nur die Dialoge betreffend, gibt es unter ShellFileDialogs.

Thema: AccessViolationException... String aus c++ Array in C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Puh ;-)
Schön, daß es jetzt funktioniert und danke für die positive Rückmeldung.

Thema: Bild in RichTextBox
Am im Forum: GUI: Windows-Forms

Manchmal kann es so einfach sein...

Thema: Bild in RichTextBox
Am im Forum: GUI: Windows-Forms

Du meinst .NET Framework 4.8? Ich wollte nur wissen, ob es nicht doch das neuere .NET 5 / 6 oder 7 ist.

Ich habe sowohl per Code, d.h. Paste als auch manuell über "Strg+V" das im Clipboard gespeicherte BMP-Bild in die RichTextBox einfügen können.
Kannst du es denn zur Laufzeit manuell über "Strg+V" bzw. das Kontextmenü "Einfügen" hinzufügen (oder ist es ausgegraut)?
Hast du es mal mit einer anderen BMP-Datei probiert (evtl. ist deine "NeoPixel.bmp" in einem nicht-kompatiblen Format)?

Thema: Bild in RichTextBox
Am im Forum: GUI: Windows-Forms

Welche .NET Version verwendest du?

In einem Testprojekt mit .NET Framework 4 kann ich problemlos eine BMP-Datei in eine RichTextBox einfügen.

Dein Ansatz mit der PictureBox, wie du schon erkannt hast, kann so nicht funktionieren, da das RTF-Control so nichts über dieses Control weiß und somit den Text auch nicht herumfließen lassen kann.

Thema: Tibber CURL-Request
Am im Forum: Grundlagen von C#

Ich meinte, daß du ersteinmal unter Windows testest, ob der Code funktioniert. Und wenn das klappt, dann baust du den Code nach und nach um, so daß es dann bei deiner anderen Umgebung kompiliert und funktioniert.

Thema: Tibber CURL-Request
Am im Forum: Grundlagen von C#

Benutzt du das neueste VS? Seit der letzten C#-Version 11 gibt es Raw string literal, d.h. du kannst den gesamten Aufruf direkt in deinen Code einbauen (ohne explizit Zeichen 'escapen' zu müssen).

Thema: Tibber CURL-Request
Am im Forum: Grundlagen von C#

Auf welcher Hardware dein eigentlicher Code läuft spielt ja für den Aufruf ersteinmal keine Rolle.
Du mußt schauen, daß du ersteinmal einen funktionierenden Aufruf mit CURL hinbekommst (egal, ob von Windows, Linux oder einem anderen System).

Thema: Parse "Sun Dec 13 03:52:21 +0000 2009" zu DateTime
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Abt,

jetzt wollte ich es doch mal genauer wissen und habe im Source-Code nachgeschaut. Das eigentliche Parsen des Formats findet in der Methode DateTimeParse.ParseByFormat statt, für "z" in Zeile 4122 ff.
Dort wird erst mittels GetRepeatCount() die maximale Anzahl des gleichen Formatspezifizierers (hier also z) ermittelt und dann die Methode ParseTimeZoneOffset aufgerufen.
Und dort ist das Entscheidende der switch über die Anzahl: bei Werten ungleich von 1 und 2 wird dann der default Code ausgeführt und dort ist dann der entscheidende Hinweis als Kommentar


// ':' is optional.
if (str.Match(":"))
  // ...
Zusammengefaßt also:
- "z" und "zz" werden getrennt geparst
- "zzz" sowie alle weiteren Wiederholungen von z werden gleich behandelt. Was in der Doku fehlt, ist der Hinweis auf das optionale : Zeichen bei dem Zeitzonenoffset!

Ich habe jetzt auch mal den Code selber kompiliert und ausgeführt (nur mit "zzz" und -1230 als Zeitzonenoffset):


string date = "Sun Dec 13 03:52:21 -1230 2009";
string format = "ddd MMM dd hh:mm:ss zzz yyyy";
CultureInfo provider = new CultureInfo("en-US");
CultureInfo provider2 = new CultureInfo("de-DE");

if(DateTime.TryParseExact(date, format,  provider, DateTimeStyles.None, out DateTime dt))
{
	Console.WriteLine(dt.ToString("o"));
	Console.WriteLine(dt.ToString("G", provider2));
}
Richtige Ausgabe:

2009-12-13T16:22:21.0000000+00:00
13.12.2009 16:22:21
(also die Zeit um 12 Stunden und 30 Minuten verschoben)
Das selbe Ergebnis gibt es auch bei -12:30 als Zeitzonenoffset.

qed.

Thema: Parse "Sun Dec 13 03:52:21 +0000 2009" zu DateTime
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Dein letzter Code sieht schon ganz gut aus, jedoch sehe ich keine Millisekunden (daher solltest du fff löschen).
Und +0000 ist wohl der Zeitzonenoffset, jedoch erwartet zzz diesen im Format +00:00 (s.a. Formatspezifizierer „z“ für das Offset) - das müßtest du also mal näher evaluieren.
Desweiteren solltest du daher auch DateTimeOffset verwenden.

@Abt: Als Nachfrage zu deinem Code: Woher hast du den vierstelligen zzzz als Format? Dies ist, soweit ich gelesen habe, nirgendwo dokumentiert.

Thema: Parse "Sun Dec 13 03:52:21 +0000 2009" zu DateTime
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Was hast du denn genau versucht?

Thema: Tibber CURL-Request
Am im Forum: Grundlagen von C#

Auf Anhieb sehe ich, daß die Query falsch ist (es ist ja JSON-Format):


string query = "{ \"query\" : /*...*/ }"; // Doppelpunkt außerhalb der Hochkommata
Am besten, du testest es direkt in der Eingabeaufforderung mit curl (setze einen Haltepunkt und kopiere dann den Inhalt der Variablen url).

PS: Hat dir meine Antwort in deinem anderen Thema bzgl. WebRequest weitergeholfen?

Thema: SSID in Combobox darstellen
Am im Forum: GUI: WPF und XAML

Bei DisplayMemberPath muss eine Eigenschaft verwendet werden, kein reines Feld, also


public string SSID { get; set; } = "NONE";
(am besten auch die anderen Felder zu Eigenschaften umwandeln)

Du solltest bisher auch im VS-Ausgabefenster eine Binding-Warnung sehen (ansonsten in den Optionen höher einstellen).

Thema: AccessViolationException... String aus c++ Array in C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Sorry, aber dein C++-Code ist fehlerhaft:
Zum einen kopierst du in SetStr das Nullendezeichen ('\0') nicht mit und zum anderen erzeugt GetStrCA undefiniertes Verhalten (UB), da myData nur einen Leerstring als String-Literal darstellt und kein beschreibbares String-Array.

Wie schon geschrieben, benutze zum Kopieren eines C-Strings strcpy (bzw. strncpy mit Angabe der max. Länge).
Und hast du bei STRLENGTH auch dieses Nullendezeichen beachtet, d.h. dieser Wert sollte mindestens 5 sein?

Warum benötigst du denn noch das Array strArrMC (und wenn, dann sollte es nicht im Shared Memory Bereich liegen!)?

Hier mein (aus dem Texteditor) geschriebener Code dazu:


bool __stdcall SetStr(int gvId, const char* gvStr)
{
	if (gvId ≥ 0)
	{
		strArrMC[gvId] = gvStr;

		//FÜR CA
		std::strcpy(strArrCA[gvId], gvStr);
		// bzw.
		// std::strncpy(strArrCA[gvId], gvStr, MAXELNGTH); gvStr[MAXLENGTH-1] = `\0';

		return true;
	}

	return false;
}

const char* __stdcall GetStrCA(int gvId)
{
	if (gvId ≥ 0)
	{
		return strArrCA[gvId];
	}
	else
		return "Null";
}
(gvStr ist dasselbe wie &gvStr[0], jedoch kürzer und üblicher so zu schreiben)

PS: Irgendwie erzeugt der Browser aus >= immer ein Zeichen - das mußt du dann wieder ändern.

Thema: AccessViolationException... String aus c++ Array in C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Mir ist gerade aufgefallen, daß man mittels Zeiger keine Daten in verschiedenen Prozessen nutzen kann, s.a. How do I share data in my DLL with an application or with other DLLs?:

Zitat
Each process gets its own address space. It is very important that pointers are never stored in a variable contained in a shared data segment. A pointer might be perfectly valid in one application but not in another.
Du müsstest also so etwas wie

char strArr[MAXSYSTEM][MAXLENGTH]
verwenden (also ein fixes 2D-Array). Und dann von C++ aus mittels str(n)cpy o.ä. die Texte reinkopieren.

Thema: SQL Statement zu LINQ
Am im Forum: Datentechnologien

Hast du denn auch IAdresseRepository mit der Klasse AdresseRepository registriert?

Thema: AccessViolationException... String aus c++ Array in C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das ist ja schon mal ein kleiner Fortschritt. Und jetzt gibt es wohl auch keinen Speicherzugriffsfehler mehr?

Das was mich jedoch wundert, ist, daß du für 1 einen Leerstring ("") und nicht null zurückerhältst - denn

const char* strArr[MAXSYSTEM] = { "" };
initialisiert ja nur den ersten Wert (Index 0) mit dem Leerstring, alle weiteren Werten werden auf NULL (bzw. nullptr) gesetzt.
Hat die C++ Anwendung auch nur einen Leerstring geschrieben? Und mit welcher Speicheranforderungsfunktion wird denn der String (const char*) erzeugt?

Was passiert denn, wenn du testweise mal das Array so initialisierst:
const char* strArr[MAXSYSTEM] = { "0", "1", "2" };
?

Ansonsten könntest du auch mal probieren, 2 C++ Anwendungen dazu zu erstellen (eine schreibt, die andere liest).