Programmieren – die neusten Beiträge

Warum sind viele DLLs, die Windows zur Verfügung stellt, Bibliotheken, die nur von C / C++ gelesen werden können?

Ich probiere gerade alles mit statischen / dynamischen Bibliotheken zu verstehen (wir haben das in der Vorlesung nur kurz überflogen) und frage mich jetzt, warum die DLL-Dateien, die man auf Windows findet, überwiegend für C / C++ geschrieben sind.

Den Sinn hinter DLLs habe ich kapiert. Das sind im Prinzip Programmteile, auf die viele verschiedene Programme zugreifen können. Anstatt dass jedes Programm immer wieder seine Bibliotheken selbst mitbringt und dann lädt, kann man darüber eine Bibliothek von Windows aus laden und im Programm strenggenommen nur einen Pointer verwenden, um auf Funktionen der Fall zuzugreifen. Das spart dann eine Menge Speicherplatz.

Jedoch verstehe ich nicht so ganz, warum all diese Bibliotheken C- / C++-DLLs sind, die also ohne weiteres nur von diesen zwei Sprachen benutzt werden können. Ich habe jetzt schon viel gelesen, wo Leute z.B. in Java oder Python einige Windows-Bibliotheken (wie z.B. zipfldr.dll, was die Anweisung enthält, wie man in ZIP-Pakete, ohne sie zu entpacken, hineinschauen kann) nutzen wollten und das aber nur über Umwege funktioniert hat (wo im Übrigen auch C- / C++-Code benutzt werden musste).

Warum ist das so?

Ist das nicht ziemlich unpraktisch? Ich meine, dann müssten doch quasi alle Programme, die nicht in C oder C++ geschrieben wurden, entweder immer ihre eigenen DLLs beim Download mitbringen, was sehr speicherintensiv wäre oder man müsste, wenn man eine Windows-DLL z.B. in Java nutzen möchte, für jede Funktion, die man aus dieser nutzen wollte, sich in C eine Konvertierungsmöglichkeit zusammenbasteln. Und C / C++ wird zwar für viel Anwendungsprogrammierung verwendet, aber andere Sprachen sind doch weiter verbreitet, oder?

Ich hätte nur ein paar Ideen, warum das so ist:

  1. Windows wurde selbst zu großen Teilen in C(++) programmiert und bringt die DLL-Dateien nur mit, weil es die selber braucht.
  2. C(++) ist die bekanntere Sprache, die sehr hardwarenah noch vor Assembler funktioniert.
  3. C(++) wird mit Abstand am meisten für Anwendungsprogrammierung verwendet und die meisten Programme die man installiert sind somit in C(++) erstellt worden. Python z.B. nutzt man ja eher für Dinge wie KI oder Data Science, weil Python nicht so schnell ist.

Aber was ist der richtige Grund? Und gäbe es nicht eine Möglichkeit, dass alle Programme irgendwie auf die System-DLLs von Windows zugreifen könnten?

Computer, Technik, programmieren, Informatik, Technologie

Kennt einer von euch ein technisches Studienfach,welches AUCH für fleißige Mädels geeignet sein könnte,die nicht zu den hellsten Kerzen auf der Torte zählen,..?

… bzw. nur einen (Gesamt-) „IQ“ von 85 beispielsweise besitzen, jedoch eine längst abgeschlossene schulische Ausbildung aus einem eher technischen Bereich mit einem zusätzlichen vollen Abitur in der Tasche haben. Dieses Vollabi wurde jedoch angenommen aufgrund einer katastrophalen Erfahrung mit „Begabungsanalysen“ (bei EINER ganz bestimmten Studien- und Berufsberaterin) und der daraus entstandenen deutlich verschlechterten Arbeitshaltung sowie einer extrem unregelmäßigen Erledigung von Hausübungen mit einem eher schlechten 3er-Abi-Schnitt (2,9) leider erzielt… 🌩 🚫

Also… nochmal: 1.) Welches von „den“ technischen bzw. ingenieurwissenschaftlichen Studiengängen (Elektrotechnik, Bauingenieurwesen usw. usw.) würdet ihr einer vom rein Kognitiven her eher „dummen“ oder zumindest einer etwas weniger intelligenten Person am ehesten zutrauen? 2.) Und glaubt ihr außerdem, dass das Fach Elektrotechnik für einen „solchen“ Menschen einigermaßen machbar wäre, sobald dieser sich z.B. um ein Bestehen von Prüfungen generell extrem bemüht sowie ein mehr oder weniger großes Interesse für diesen Beruf entwickelt?

Computer, Arbeit, Beruf, Wissen, Lernen, Studium, Schule, Mathematik, Technik, Elektronik, IT, Menschen, programmieren, Noten, Berufswahl, Frauen, Talent, Gehirn, Kommunikation, Elektrotechnik, Wissenschaft, Intelligenz, Erfolg, Abitur, Bauingenieur, Bauingenieurwesen, Begabung, Fleiss, Informatik, Ingenieur, Ingenieurwesen, IQ, Logisches Denken, Schaltung, Theorie, Verständnis, Wille, Ziele, Fähigkeiten, Muehe, Ausbildung und Studium, Beruf und Büro

wie läuft Programmcode ab? Reinfolge?

Allllllso ich verstehe nicht wie code abläuft. Normalerweise läuft der Code von oben nach unten ab. Ja aberrrrr Beispsiel:

In einem Spiel hat man Blöcke. Ein Quadrat mit 10 Blöcken ist vor mir.

Wichtig: Von jedem dieser 10 Blöcke geht ein Befehl aus. Also mein Programm sagt das alles Code was ich hier rein tue, von jedem dieser Blöcke aus geht:

//ich setzte Variable "start" auf 1

Wenn "start" auf 1 dann

setzte "BlockNummer" auf (get "Blocknummer" + 1)

//"Blocknummer" sollte doch jetzt auf 10 sein weil ich 10 Blöcke habe.

Wenn "BlockNummer" kleiner oder gleich ist als "5"

ersetzte dich selber mit Block "Erde"

Ungefähr so ist mein Code

Er ersetzt jetzt 5 Blöcke. 5 Blöcke sind jetzt Erde und die anderen 5 haben sich nicht geändert.

Macht für mich keinen Sinn. Sollte "Blocknummer" nicht auf 10 sein? Also sollte eigentlich Garnichts passieren.

Und wenn ich das hier mache:

//ich setzte Variable "start" auf 1

Wenn "start" auf 1 dann

setzte "start" auf 0 (<-- Neu)

ersetzte dich selber mit Block "Erde"

Jetzt ersetzt er nur 1 Erdblock. Damit er alles zu Erde ersetzt muss ich sagen, dass er kurz warten soll bis er "start" wieder auf 0 setzt. Wieso ist das so? Theoretisch sollte er alles zu Erde ersetzten.

Das bringt mich durcheinander wie Code abläuft. Vielleicht sollte das auch nicht passieren und meine art "engine" macht das so. Wie läuft code ab?

Computer, Software, Technik, programmieren, Java, Technologie, Spiele und Gaming

[Java] Wie soll ich ein Würfel erstellen?

Hallo Leute,

ich weiß nicht wie ich die Aufgabe lösen soll ? Kann mir jemand Helfen?

---------------------------------------------------

Aufgabe 7: Zeichne die Würfel 

Gehe nun in die Klasse Painting. 

Füge der Klasse vier verschiedene Würfel als Objektvariablen (w1 bis w4) hinzu. 

(Anmerkung für Experten: Hier kann auch gerne mit einem Wuerfel[] - Array gearbeitet werden) 

Diese sollen im Konstruktor der Klasse Painting wie folgt initialisiert werden: 

  • einen Standardwürfel 
  • einen weiteren blauen Würfel, einen grünen Würfel sowie einen schwarzen Würfel - initialisiert mit sinnvollen Werten für xPos, yPos, breite, hoehe, sodass sie am Ende nebeneinander mit einem Mindestabstand von 15px gezeichnet werden können. 

 

Zeichne nun die Würfel mittels folgender Methoden innerhalb von paintComponent(): 

Painting.java

import javax.swing.JPanel;
import java.awt.*;

public class Painting extends JPanel{
	Wuerfel w1 = new Wuerfel();
	Wuerfel w2 = new Wuerfel();
	Wuerfel w3 = new Wuerfel();
	Wuerfel w4 = new Wuerfel();
	

    //ATTRIBUTE (Platz f�r Objektvariablen)
 

    public Painting(Frame f){
    	w1.setxPos(30);
    	w1.setyPos(30);
    	w1.getFarbe();
    	
    	
        //Hier Initialisierung vornehmen
       
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        //BEISPIEL-ZEICHNUNG:
        g.setColor(Color.BLACK);
        g.fillRect(20, 20, 30, 30);
        g.setColor(Color.WHITE);
        g.drawString("1", 30, 40);

    }
}
Schule, programmieren, Java

Wie kann Java auf ein User-Input warten?

Guten Tag,

ich programmiere gerade ein kleines Java-Projekt.

Dort hat bis jetzt auch alles geklappt, doch nun weiß ich nicht mehr weiter.

Ich habe für den Start meines Programms dieses GUI erzeugt:

Wie da ja schon steht, soll der User 'W' drücken, damit das Spiel anfängt. Doch ich weiß nicht, wie ich das programmieren kann. Ich habe schon eine Klasse (KeyHandler) angelegt, die KeyListener implementiert und die ich schon meinem Programm hinzugefügt habe, doch passieren tut dabei nichts.

Ich habe auch schon eine Ahnung warum: Die Variable 'commands.isRunning' wird direkt überprüft (und danach nicht mehr) und deshalb der If-Teil überschprungen. Wie kann jetzt Java auf einen User-Input warten, damit die Variable nicht sofort überprüft wird?

Hier ist meine Draw Klasse:

(commands.isRunning ist gerade noch false, soll aber durch das 'W' true werden. Die Methode, die dadurch aufgerufen werden soll, steht in der Klasse Commands)

public class Draw extends JPanel implements Variables {

    Commands commands = new Commands();
    KeyHandler keyHandler = new KeyHandler();

    Player player = new Player();
    Donut donut = new Donut();

    Draw() {
        this.addKeyListener(keyHandler);
        this.setPreferredSize(new Dimension(SCREEN_WIDTH, SCREEN_HEIGHT));
        this.setBackground(Color.black);
        this.setFocusable(true);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        commands.printStartText(g);
        
        if (commands.isRunning() == true) {

            // Draw Grid
            for (int i = 0; i < SCREEN_HEIGHT / UNIT_SIZE; i++) {
                g.drawLine(i * UNIT_SIZE, 0, i * UNIT_SIZE, SCREEN_HEIGHT);
                g.drawLine(0, i * UNIT_SIZE, SCREEN_HEIGHT, i * UNIT_SIZE);
            }

            // Place Player
            player.placePlayer(g);

            // Place Donut
            donut.placeDonut(g);

            // Place Barrier

            // Place Gadget

            // Set Default Color
            g.setColor(Color.darkGray);

        }
    }
}

Und hier die KeyHandler Klasse:

public class KeyHandler implements KeyListener {

    Commands commands = new Commands();

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void keyPressed(KeyEvent e) {

        switch (e.getKeyCode()) {
        case KeyEvent.VK_W:
            commands.startGame();
            break;

        case KeyEvent.VK_A:

            break;
        case KeyEvent.VK_S:

            break;
        case KeyEvent.VK_D:

            break;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub

    }
}

Auch habe ich schon 'System.in.read' hinter 'commands.printStartText(g);' platziert, doch da wurde dann nur ein weißes Bild angezeigt.

Ich hoffe ihr könnt mir helfen!

Schon mal vielen Dank im voraus.

Bild zum Beitrag
Computer, Technik, programmieren, Java, Informatik, GUI

C# String vergleich ohne Beachtung der Groß- Kleinschreibung?

Hallo, ich habe seit gestern mit dem progammieren von C# angefangen.

Das Programm "Streamer.bot", das man mit Twitch verbinden kann, unterstützt eigene C# Codes und deshalb bin ich darauf gekommen mit dem "programmieren" anzufangen.

Ich habe einen Code erstellt, in dem ein Input (string msg) mit einer Textdatei (string[] blacklist) verglichen wird. In der Textdatei stehen alle Blacklist Wörter.

Nun bin ich auf das Problem gestoßen, dass die Groß- und Kleinschreibung bei dem vergleich beachtet wird und das ist bei einer Blacklist eher nachteilig.

Meine Frage an dieser Stelle ist, wie ich es schaffe, dass die Groß- und Kleinschreibung bei dem vergleich ignoriert wird.

Ich hoffe sehr, dass mir jemand helfen kann,
Liebe Grüße, JuuriiK :)

msg= Input eines users

blacklist= Blacklist txt datei

Im folgenden ist der Code:

using System;
using System.IO;
using System.Linq;


public class CPHInline
{
    public bool Execute()
    {
        string userName = args["userName"].ToString();
		string TOSmsg = args["TOSmsg"].ToString();
        string msg = args["rawInput"].ToString();
        string[] blacklist = File.ReadAllLines(args["blacklistDatei"].ToString());
		string actionName =  args["actionName"].ToString();
        if (blacklist.Equals(msg))
        {
            CPH.TimeoutUser(args["user"].ToString(), 30);
            CPH.SendMessage(TOSmsg);
        }
        else
        {
            CPH.RunAction(actionName);
        }


        return true;
    }
}
Computer, Vergleich, Programmierer, programmieren, C Sharp, Programmiersprache, String

Was ist der Sinn hinter dem Überladen von Operatoren in C++ und wie funktioniert das genau?

Hi, wir haben uns gerade in der Vorlesung mit diesem Thema beschäftigt, ich habe aber nicht wirklich verstanden wie das funktioniert und wozu das ganze gut sein soll...

War leider auf Englisch, aber unser Prof hatte irgendwie was davon erzählt, dass das Überladen von Operatoren nützlich ist wenn man zb Plusrechnen mit dem + Operator nicht nur auf Zahlen beziehen möchte.

Man könnte ja auch irgendwie Objekte zusammenzählen, die man in irgendwelchen Klassen definiert hat.

Ich verstehe das irgendwie nur zur Hälfte, macht es Sinn sich das so vorzustellen, dass c++ Vektoren normal nicht über den + Operator addieren kann, und ich den Operator dann "überlade" und ihm damit die nötige zusätzliche Funktion dafür gebe und er danach zb auch Vektoren die ich über eine Klasse oder ein Struct definiert habe zusammenrechnen kann ?

Und ich frage mich etwas wie die überladung dann genau funktioniert, irgendwie unterscheiden sich diese dann ja weil es ja unäre und äre operatoren gibt, also welche die sich nur auf ein oder zwei Objekte beziehen...

Wäre nett wenn mir jemand weiterhelfen könnte.

Das hier ist zb eine Überladung des + Operators die ich nicht verstehe, was bezwecke ich damit ? Dass ich 2 Objekte des Typs RationalNumber die ich davor in einer Klasse definiert habe addieren kann ?

Bild zum Beitrag
Computer, Schule, programmieren, Cplusplus

Was ist ein source?

Hey ich habe so videos über cheats gesehen und die reden über source und ich wollte fragen ob das einer ist :

#include <includes.h>#include <no_renderer/FW1FontWrapper/FW1FontWrapper.h>#include <no_renderer/no_menu/no_menu.h>#include <no_renderer/no_gui/no_gui.h>#include <no_define.h>#include <fstream>#include <no_cheat/no_spoofcall.h>#include <no_cheat/framework.h>#include <no_cheat/Esp.h>#include <no_cheat/Aimbot.h>#include <no_cheat/Exploits.h>#include <no_cheat/PawnsLoop.h>

//typedef HRESULT(*present_fn)(IDXGISwapChain*, UINT, UINT);//inline present_fn original_present{ };

//typedef HRESULT(*resize_fn)(IDXGISwapChain*, UINT, UINT, UINT, DXGI_FORMAT, UINT);//inline resize_fn original_resize{ };

HRESULT(*present_original)(IDXGISwapChain* swapchain, UINT sync, UINT flags) = nullptr;

//rendertargetID3D11Texture2D* RenderTargetTexture;ID3D11RenderTargetView* RenderTargetView = NULL;

UINT vps = 1;ID3D11RasterizerState* rwState;ID3D11RasterizerState* rsState;float ScreenCenterX;float ScreenCenterY;

bool firstTime = true;

unsigned long RGBAtoHEX(int r, int g, int b){ return ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff);}

void functions_line(int x, int y, int x2, int y2, no_menu::color c) noexcept{ color cool_col(c.a, c.r, c.g, c.b); gui.draw_line(x, y, x2, y2, cool_col);}

void functions_rect(int x, int y, int x2, int y2, no_menu::color c) noexcept{ color cool_col(c.a, c.r, c.g, c.b); gui.draw_rect(x, y, x2, y2, cool_col);}

void functions_filled_rect(int x, int y, int x2, int y2, no_menu::color c) noexcept{ color cool_col(c.a, c.r, c.g, c.b); gui.fill_rect(x, y, x2, y2, cool_col);}

const wchar_t* CharToWchar(const char* ch){ const size_t len = strlen(ch) + 1; wchar_t* wch = new wchar_t[len]; mbstowcs(wch, ch, len); return wch;}

Computer, programmieren

JavaFX TableView mit Daten aus der Datenbank füllen?

Hey Leute,

ich versuche gerade meine Tabelle mit Daten aus der Datenbank zu füllen aber dabei bekomme ich eine Fehlermeldung. Kann mir jemand dabei helfen?

Users Klasse:

public class Users {
    private int id;
    private String userToken;
    private String firstname;
    private String lastname;
    private String emailAddress;
    private String creationTime;
    private Button deleteButton;

    public Users(int id, String userToken, String firstName, String lastName, String emailAddress, String creationTime) {
        this.id = id;
        this.userToken = userToken;
        this.firstname = firstName;
        this.lastname = lastName;
        this.emailAddress = emailAddress;
        this.creationTime = creationTime;
    }
}

Die Fehlermeldung:

UserController:

public class UserController {

    @FXML
    private TableColumn<Users, Integer> idCol;

    @FXML
    private TableColumn<Users, String> creationTimeCol;

    @FXML
    private TableColumn<Users, String> emailCol;

    @FXML
    private TableColumn<Users, String> firstnameCol;

    @FXML
    private TableColumn<Users, String> lastnameCol;

    @FXML
    private TableColumn<Users, String> deleteCol;

    @FXML
    private TableColumn<Users, String> userTokenCol;

    @FXML
    private TableView<Users> table;

    @FXML
    private TextField textField;

    public void printUser() {
        ObservableList<Users> allUserList = FXCollections.observableArrayList();

        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:2020/database", "root", "");
            System.out.println("Connected");
            //PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM usertable");
            ResultSet resultSet = connection.createStatement().executeQuery("SELECT * FROM usertable");
            while (resultSet.next())  {
                allUserList.add(new Users(Integer.parseInt(resultSet.getString("id")),
                        resultSet.getString("userToken"), resultSet.getString("firstName"),
                        resultSet.getString("lastName"), resultSet.getString("emailAddress"),
                        resultSet.getString("creationTime")));

            }

        } catch (SQLException ignored) {
            ignored.printStackTrace();
        }
        idCol.setCellValueFactory(new PropertyValueFactory<Users, Integer>("id"));
        userTokenCol.setCellValueFactory(new PropertyValueFactory<Users, String>("userToken"));
        firstnameCol.setCellValueFactory(new PropertyValueFactory<Users, String>("firstName"));
        lastnameCol.setCellValueFactory(new PropertyValueFactory<Users, String>("lastName"));
        emailCol.setCellValueFactory(new PropertyValueFactory<Users, String>("emailAddress"));
        creationTimeCol.setCellValueFactory(new PropertyValueFactory<Users, String>("creationTime"));
        table.setItems(allUserList);
        System.out.println("all user got");
    }
}

Bild zum Beitrag
Computer, programmieren, Java, Datenbank, JavaFX, MySQL, GUI

Meistgelesene Beiträge zum Thema Programmieren