- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte
Ergebnis 31 bis 40 von 52

Thema: Char - Array und Pointer

  1. #31
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich habe alles ausprobiert, was mir so einfiel und gesucht und gesucht. Ich habe nichts Brauchbares gefunden. Es scheitert immer daran, dass man im C-Quelltext für Arduino nicht eine Eigenschaft (Variable) einem Objekt nachträglich hinzufügen kann, die nicht irgendwie definiert ist. Ich glaube der Lösungsansatz in diese Richtung liegt bei verketteten Liste .. da war mal was ...
    Nach kurzem Anschauen ist es das, was man dafür benötigt, um dynamisch (übergeordnete) Objekte zur Laufzeit abzubilden / zu erstellen / zu verändern. Ich nenne die mal übergeordnet, weil sich so Strukturen (Objekte wenn man so will) aus Klassen (die im Quelltext definiert wurden) zusammensetzen und verwalten lassen.
    Geändert von Moppi (29.10.2019 um 05:01 Uhr)

  2. #32
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Moppi Beitrag anzeigen
    Ich nenne mal als Beispiel JavaScript.
    JavaScript wird interpretiert. Da baut der Interpreter zur Laufzeit Strukturen und Objekte. C bzw C++ wird compiliert. Da baut der Compiler die Strukturen und der Linker plaziert sie im Speicher. Daher kann zur Laufzeit nichts geändert werden. Da sind auch aus Variablennamen längst Speicheradressen geworden.

    Zitat Zitat von Moppi Beitrag anzeigen
    I... im C-Quelltext für Arduino nicht ....
    Das gilt immer für C, hat mit Arduino nichts zutun.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #33
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    So weit war ich bei C/C++ noch nicht durchgestiegen. Ich kann mir bis jetzt noch nicht vorstellen, dass tatsächlich keinerlei Möglichkeit besteht, Objekte nachträglich zu erweitern. Wenn das aber so ist, Pech gehabt.
    Liegt vielleicht daran, dass in C/C++ unter OOP verstanden wird, dass man die Programmierung (Erstellen, Warten, Pflegen des Quelltextes) vereinfacht; ich dagegen Objekte aber als Objekte betrachten und verändern möchte, die man auslagern und bei bedarf wieder eingliedern kann, ebenso dass sie grundsätzlich veränderbar sind (zumindest Eigenschaften hinzuzufügen und zu entfernen) und zwar jederzeit.

    Das JavaScript eine Interpretersprache ist, ist schon klar. Bloß mir noch nicht, wie genau dort auf unterster Ebene das Objekthandling implementiert wird. Mir kommt der Gedanke auf, dass dies nicht anders gemacht wird, als es sich hier gerade mit C aufzeigt. Man weiß ja von Maschinencodeseite, dass es grundsätzlich möglich ist, auch zur Laufzeit neuen Maschinencode zu generieren, der auch ausgeführt werden kann - also sich selbst verändernder Code. Dass das in geschützen Modi der CPUs ab 80386 anders oder zumindest nicht mehr so einfach jederzeit möglich ist, weil es eben Privileglevel gibt, ist eine andere Sache.

    Bei C/C++ gibt es std::list
    So kann man zur Laufzeit Kopien von Objekten erstellen und diese untereinander per Listen verketten und so verwalten.



    MfG
    Geändert von Moppi (29.10.2019 um 08:21 Uhr)

  4. #34
    HaWe
    Gast
    nein, mit C++ auf Microprozessor-Basis (AVR, ARM, ESP) sehe ich keine Chance.
    Eventuell geht es über Betriebssysteme mit dynamischen Link-Libraries (DLL wie bei Windows), wobei eine DLL zur Laufzeit erzeugt und dann neu eingelinkt wird...
    Aber Interpreter wie Javascript arbeiten komplett anders als executables aus C++ Programmen, wie Klebwax schon schrieb, und Interpreter-Code ist auch um 10er-Potenzen (1/100 oder gar 1/1000) langsamer.
    OOP sagt auch nur aus, dass grundsätzlich objektorientiert programmiert werden kann (Objekte, Instanzen, Vererbung) und sagt nichts darüber aus, was man damit machen kann oder auch nicht.

  5. #35
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Ich verstehe gerade nicht warum man ein Objekt zur Laufzeit überhaupt einen neuen Member hinzufügen muss.

    Wenn man weis was man möchte braucht man doch zur Laufzeit nichts hinzufügen!? In Java (Am Beispiel modded Minecraft) kann man Klassen und daraus resultierende Objekte manipulieren und neue Member hinzufügen weil man zum Beispiel die Funktion einer Tür erweitern möchte ohne eine gänzlich neue Türklasse zu erstellen. Aber da geht es ja nur darum die Funktionalität zu erweitern und das patchen der Klassen funktioniert auch nur solange gut, wie von der Klasse auch noch kein Obejkt erzeugt worden ist!

    meinObjekt.Name2 = "Müller"; einfach so funktionieren wird, wenn Name2 nicht schon in meinObjekt existiert hat.
    Aber vielleicht funktionbiert es ja auch mit: meinObjekt.Name2 = new String("Müller"); ???
    Wenn es darum geht, warum nicht einfach
    Code:
    meinObjekt.Namen[2] = "Müller";
    wobei Namen ein Listen-Objekt ist
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #36
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Wenn man weis was man möchte braucht man doch zur Laufzeit nichts hinzufügen!?
    Doch schon. Es gibt ganz einfache Beispiele, wie die einer Schallplattensammlung. Wo Du einfach neue Objekte hinzufügen möchtest, ohne dass das z.B. auf 50 Objekte beschränkt wäre. Während Schallplatten bestimmte Informationen hergaben, die man in Eigenschaften eintragen könnte, könnte es sein, dass CDs noch eine weitere Eigenschaft haben, die man auch gerne hinzufügen würde, ohne den Programmcode dafür ändern zu müssen.



    MfG

  7. #37
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Wo Du einfach neue Objekte hinzufügen möchtest, ohne dass das z.B. auf 50 Objekte beschränkt wäre.
    Exakt das habe ich doch gerade beschrieben?! Ein std::list Objekt ist dynamisch, man kann also jederzeit (solange der RAM es hergibt) neue Objekte hinzufügen (bei einem µC würde ich aber eine LinkedList nehmen, keine Ahnung was das Äquivalent in C++ ist)

    Während Schallplatten bestimmte Informationen hergaben, die man in Eigenschaften eintragen könnte, könnte es sein, dass CDs noch eine weitere Eigenschaft haben, die man auch gerne hinzufügen würde, ohne den Programmcode dafür ändern zu müssen.
    Öhm wie wäre es wenn du dann einfach der Schallplatte beibringst dass sie sich selbst erklärt?! Warum müssen die Informationen über die Schallplatte in der "Liste" doppelt gespeichert werden, das ist doch Speicherverschwendung und die Liste interessiert nicht ob das eine Schallplatte aus Gold, Nickel, Paltin oder Uran ist oder nach Einhornpups duftet, solange sie mit der grundlegenden Schallplatte-Klasse kompatibel ist oder?
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #38
    HaWe
    Gast
    @moppi:
    bei deinem Schallplatten-Beispiel änderst du nicht das Objekt selber, sondern fügst nur dynamisch einen neuen Eintrag oder mehrere hinzu. Das ist genau das, was Adressen-Datenbanken machen, wenn du eine neue Person mit einer neuen Anschrift und Tel.-Nr. hinzufügst. Die Anzahl der Einträge ist nach oben offen, wenn du sie dynamisch erzeugst.
    Du fügst dann aber kein neues Objekt (keine neue Klasse, keine neue Instanz) hinzu, für das z.B. auch die Anzahl der PCs und TVs im Haushalt oder die qm der Wohnung eingegeben werden kann.
    Für ganz neue Felder musst du das Objekt von vornherein mit diesem Feld konstruieren und dann neu kompilieren.

    https://www.eu-datenbank.de/datenban...c-datenbanken/

  9. #39
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Für ganz neue Felder musst du das Objekt von vornherein mit diesem Feld konstruieren und dann neu kompilieren.
    Das haben wir weiter oben schon festgestellt, entspricht nicht so unbedingt meiner Vorstellung von Objektorientierung.

    Stell Dir nur vor, Du könntest als Mensch dein Smartphone nicht händeln. Warum? Weil als Du geboren wurdest, das noch nicht existierte und das Gehirn nicht in der Lage ist, sich darauf einzustellen, weil die Struktur, um ein Smartphone zu handeln und Informationen darüber zu speichern, ja noch nicht existieren konnte. Du könntest es zwar sehen, aber nie zuordnen was es ist, bzw. wie man es bedient und was man damit tun kann; Du müsstest erst Nachkommen haben, deren Gehirn dann drauf ausgerichtet / eingestellt ist, weil es sich komplett neu entwickelt, also sozusagen neu kompiliert wird.

    MfG

    - - - Aktualisiert - - -

    Aber: so weit ich gelesen habe, ist OOP dafür gedacht, die Softwareentwicklung zu vereinfachen. Nicht um selbstmodifizierenden Code zu erstellen.

  10. #40
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Deine Vorstellung von selbstmodifizierendem Code ist grundlegend falsch!
    Wenn wir mal dein Beispiel nehmen ist die Programmiersprache (und der daraus generierte Code) deine DNA, welche bestimmt wie diene Zellen konstruiert werden und wie sie sich verhalten.
    Das was uns lernfähig macht ist das Objekt "Neuron" in dem Sinne, welches flexibel konfiguriert werden kann und im Zusammenhang des großen Ganzen erlaubt Informationen auf Programmebene zu verarbeiten.

    Der Kernel in Linux kann sich grundsätzlich (auf Codelevel) nicht selbst umschreiben! Es sind fest geschriebene Programme, welche es erst erlauben dass ein Teil des Speichers modifiziert werden kann und dass du einen Teil des Binärcodes zur Laufzeit austauschen kannst, aber auch erst wenn alle Abhängigkeiten davon freigegeben worden sind oder du braucht einen Neustart.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte

Ähnliche Themen

  1. Pointer auf Struct von Byte-Array
    Von Bumbum im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 31.05.2013, 16:01
  2. Char mit array verbinden ?
    Von AsuroPhilip im Forum Software, Algorithmen und KI
    Antworten: 22
    Letzter Beitrag: 08.09.2011, 13:37
  3. gelöst : Frage zu C und 2 Dim char Array
    Von jar im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 29.05.2007, 16:53
  4. zweidemensionales char-array
    Von p_mork im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 15.03.2007, 16:54
  5. Cstring einem char array zuweisen
    Von ceekay im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 17.04.2006, 10:20

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test