64 Aufrufe
Gefragt in Anwendungen(Java,C++...) von xlking Experte (1.9k Punkte)
Hallo Liebes Forum,

mal wieder eine Frage von mir.

Ich plane eine simple Windowsanwendung zu programmieren. Sie sollte das Arbeiten mit Arrays unterstützen (so wie z.B. VBA und Javascript), eine Art Grafisches Formular darstellen können wo ich eine Textbox mit einem Filepath per Zugriff aufs Filesystem befüllen kann. Dann kommt meine eigentlicher Code, den ich noch programmieren muss, der aber mit sehr großen Zahlen (29 Stellen 12 Byte Long Integer) bis auf die letzte Stelle genau rechnen können muss.

Das ganze Programm sollte natürlich wenn es fertig ist in Maschinen code übersetzt und in einer Exe ausführbar sein und möglichst schnell durchlaufen. Hinzu kommt, dass ich die Rechte benötige, das Programm auch verkaufen zu dürfen. Mit kostenlosen Programmierumgebungen, werden mir diese Rechte bislang genommen. Es darf also gern auch was kosten.

Ich komme aus der VBA-Welt und weiß nur dass VBA (benötigt Microsoft-Anwendung und ist zu langsam) und Javascript (wird aus dem Browser ausgeführt) die falschen Umgebungen dafür sind. Wenn ein PC so und so viel GHz hat, will ich diese auch nutzen.

Hat jemand Vorschläge?

Gruß Mr. K.

3 Antworten

0 Punkte
Beantwortet von computerschrat Profi (33.3k Punkte)

Hallo Mr. K.,

hast du dir schon mal Visual Studio angeschaut? Das sollte im Grunde deine Anforderungen erfüllen. Ich weiß allerdings nicht, ob und welche der unterstützten Programmiersprachen auch die passenden Datentypen für die erforderliche Rechengenauigkeit bieten.

Visual Studion gibt es in mehreren Versionen. Die freie Version bietet nahezu den vollen Funktioneumfang, ist aber natürlich auf nicht kommerzielle Anwendung beschränkt. Immerhin kannst du damit ersteinmal testen, ob deine Anforderungen erfüllt werden. Wenn ja, kannst du auf eine der kostenpflichtigen Versionen umsteigen. Näheres dazu findest du hier: https://visualstudio.microsoft.com/de/vs/pricing/?tab=individual

Gruß computerschrat

0 Punkte
Beantwortet von

Hi Mr. K.,

kurze Einschätzung vorweg: Für deine Anforderungen (Windows-GUI, Dateiauswahl, Arrays, exakte 29-stellige Ganzzahlen, schnelle native EXE, kommerziell nutzbar) ist C# mit .NET (WPF oder WinUI 3) die pragmatischste Wahl. Alternativen wären C++ (mit Qt/wxWidgets), Delphi oder Rust – aber C#/.NET trifft deinen VBA-Background, bietet out-of-the-box präzise Dezimalarithmetik und lässt sich heute als Single-File-EXE (sogar NativeAOT) ausliefern.

Warum C#/.NET?

  • Exakte 29-stellige Zahlen: Der .NET-Typ decimal hat 96 Bit Mantisse (28–29 signifikante Dezimalstellen) und bildet Ganzzahlen bis 29 Stellen exakt ab – ohne Rundungsfehler. Für noch größere Zahlen gibt es BigInteger (arbiträr genau).

  • Schnell & nativ auslieferbar: „self-contained publish“ erzeugt eine EXE ohne separate Runtime; mit NativeAOT wird Ahead-of-Time in Maschinencode kompiliert.

  • GUI & Dateidialoge: Mit WPF (klassisch, stabil) oder WinUI 3 (modern) hast du komfortable Formular-UIs inkl. OpenFileDialog.

  • Kommerzielle Nutzung: .NET (MIT-Lizenz) darfst du verkaufen. Visual Studio Community ist für Einzelpersonen/kleine Firmen kommerziell erlaubt; ansonsten Visual Studio Professional (kostenpflichtig).

Mini-Beispiel (WPF, exakte 29-stellige Integer mit decimal)

// .NET 8, WPF Window-Code-Behind (Button klickt Datei und rechnet mit 29-stelligen ints)
using System;
using System.Numerics; // falls du BigInteger brauchst
using Microsoft.Win32;
using System.Windows;

private void PickFileAndCompute(object sender, RoutedEventArgs e)
{
    var dlg = new OpenFileDialog { Filter = "Alle Dateien|*.*" };
    if (dlg.ShowDialog() == true)
    {
        FilePathTextBox.Text = dlg.FileName;
        // Beispielrechnung mit 29-stelligen Ganzzahlen exakt:
        decimal a = decimal.Parse("99999999999999999999999999999");  // 29 Stellen
        decimal b = 2m;
        decimal c = a + b; // exakt, keine Binär-Rundung
        ResultTextBox.Text = c.ToString();
    }
}

Hinweis: Wenn deine Zwischenwerte sicher innerhalb von 29 Dezimalstellen bleiben, reicht decimal. Falls du darüber kommst (z. B. Multiplikationsketten), nutze BigInteger für Integers oder Bibliotheken für rationals/Decimalausdrücke.

Build als schnelle, eigenständige EXE

  • Self-contained (ohne installierte .NET-Runtime):

    dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true -p:SelfContained=true
    
  • NativeAOT (Ahead-of-Time, sehr schnelle Startzeit, echte Maschinencode-EXE):

    <!-- In deiner .csproj -->
    <PropertyGroup>
      <PublishAot>true</PublishAot>
      <RuntimeIdentifier>win-x64</RuntimeIdentifier>
      <PublishSingleFile>true</PublishSingleFile>
      <SelfContained>true</SelfContained>
    </PropertyGroup>
    
    dotnet publish -c Release
    

WPF oder WinUI 3?

  • WPF (.NET 8/9): Bewährt, riesiges Ökosystem, ideal für klassische Desktop-Formulare. Sehr nah an dem, was man als VBA-Umsteiger erwartet.

  • WinUI 3 (Windows App SDK): Moderner Look, etwas neue Toolchain. Für deinen Use-Case ist WPF die friktionsärmste Route.

Lizenz/Vertrieb

  • .NET: MIT – freie, kommerzielle Verwertung deiner EXE erlaubt.

  • Visual Studio: Community (kostenlos) i. d. R. nutzbar als Einzelentwickler; sonst Professional (kostenpflichtig).

  • Keine Copyleft-Fallen: Du musst deinen Quellcode nicht offenlegen und darfst verkaufen.


Gute Alternativen (falls du C# nicht willst)

  • C++ + Boost.Multiprecision + Qt/wxWidgets

      • Maximale Kontrolle/Performance, echte native EXE, exakte große Zahlen (cpp_int).

    • − Höhere Komplexität; Qt ist entweder GPL (Vorsicht bei statischem Link) oder kommerzielle Lizenz.

  • Delphi (RAD Studio)

      • Sehr produktiv für Windows-UIs, echte native EXE, kommerzielle Lizenz.

    • − Kostenpflichtig; für wirklich große Integer brauchst du eine Big-Int-Lib.

  • Rust + Tauri/egui

      • Moderne, schnelle native Binaries; num-bigint für große Zahlen.

    • − Steilere Lernkurve, GUI-Stack weniger „Drag&Drop“-artig.

  • Go + Wails/Fyne

      • Einfache Deployments, big.Int vorhanden.

    • − GUI-Komfort nicht so hoch wie WPF/Delphi; GC-Charakteristik bedenken.


Empfehlung als Schrittplan

  1. .NET 8 + WPF Projekt anlegen (Visual Studio).

  2. Rechenteil auf decimal aufbauen; wenn irgendein Pfad >29 Stellen überschreiten könnte: Wechsel auf BigInteger für die reinen Integerberechnungen.

  3. GUI: TextBoxen, Button, OpenFileDialog, ggf. Background-Threads/Task für lange Läufe.

  4. Publish als SelfContained oder NativeAOT.

  5. Installer (optional): z. B. WiX Toolset, Inno Setup, MSIX.

0 Punkte
Beantwortet von xlking Experte (1.9k Punkte)
Hallo Computerschrat, Hallo @Anonym,

Wow! Mit so umfangreicher Hilfe hab ich nicht gerechnet. Erst schon der Tipp mit Visual Studio Community, bei dem ich tatsächlich als Einzelnutzer kostenlos benutzen und dennoch mein Projekt verkaufen darf. Und jetzt wird mir nicht nur eine Programmiersprache vorgeschlagen, sondern gleich die Übersetzung vieler Fremdwörter und ein Minibeispiel mitgeliefert.

Ich hätte dir @Anonym ja einen grünen Haken für die Beste Antwort gegeben. Aber du hast dich leider nicht angemeldet. Da bringt das nix.

Da werd' ich mich also in den nächsten Monaten mal intensiv mit C# und .Net befassen. Hab die beiden bislang für zwei verschiedene Sprachen gehalten. Allerdings hab ich in der Vergangenheit oft über unzufriedene .Net User gelesen, die das verteufeln. Ist da was dran?

Naja sollte das nicht funktionieren, kann ich ja immer noch auf C++ oder andere umsteigen. Ich bin aber guter Hoffnung. Ihr Beiden habt mir auf jeden Fall wirklich sehr geholfen.

Vielen Dank
Mr. K.
...