Dummi braucht Starthilfe



  • Braunstein schrieb:

    hat die datei evtl. die Endung .hpp statt .h? Wenn das der Fall sein sollte, einfach beim include ändern.

    😃 😃 😃 👍

    Jawoll,

    das war es!! Jetzt klappt es. Nun muss ich nur noch herausfinden, wie ich die Anzeigen ansteuern kann. Wollte zum Üben einen Zahlenwert oder einen Schieberegler bedienen, der dann die Anzeige verändert...

    Zu früh gefreut, jetzt klappt es wieder nicht mehr 😡 😡

    Geht wieder 🙂 🙂 🙂

    Das scheint mit dem Verzeichnis zu tun zu haben, wo die .hpp Dateien drin liegen. Dies habe ich unter Projekt\Optionen\Verzeichnisse.... angegeben, aber irgendwie findet das Ding es nicht immer.
    Aus mir unerfindlichen Gründen geht es jetzt aber wieder, wobei der Builder immer meckert, dass er die Datei xxx.h nicht finden kann. Wenn ich dann aber das Verzeichnis wieder zu Fuß angebe und die entsprechende .hpp Datei anwähle, ist alles wieder gut.
    Kann das sein, das die .hpp Dateien von Delphi sind, und man das dem Builder noch irgendwo mitteilen muss?

    Gruß

    Uwe



  • Normalerweise must du nur unter den Projektoptionen (ohne ein geöffnetes Projekt, also vorher alle schließen) die Pfade richtig setzen.



  • Hallo Pfadfinder,

    funktionieren tut es jetzt, aber wenn ich was kompiliere, muss ich den Pfad zu den Headern zu Fuß eingeben. Man fragt danach, vielleicht auch nur, weil es hpp Dateien sind und keine h Dateien.
    Schiebe ich die Pfadangaben für Bibliothek und Header in der Liste nach oben, bekomme ich beim Kompilieren eine Fehlermeldung 😕 😕 😕

    Sehr merkwürzig......

    Gruß

    Uwe



  • Hallo,
    wie hast du denn die Komponenten installiert ?
    Du nusst die Vcwb5.bpk öffnen und dann auf compilieren-installieren.



  • Jau,

    genau so habe ich das eigentlich gemacht. Die entpackten Dateien liegen nur nicht im "normalen" Verzeichnis, sondern auf einer anderen Platte.

    Ich kann den Vorgang aber heute Abend noch einmal komplett wiederholen.

    Saluti

    Uwe



  • Welche Endung die headerdateien haben ist egal. Bei C++Projekten und insbesondere beim Builder nimmt man meist .hpp.
    Wenn dein Builder meckert, dass eine .h Datei nicht gefunden wird, liegt es in deinem Fall wohl immer daran, dass die Dateien im Ordner die Endung .hpp haben. Also immer wenn du etwas von deiner Komponente in dein projekt einfügst überprüfe die includes und ändere bei Bedarf .h in .hpp
    Das problem hatte ich bei manchen Komponenten auch schon.
    Die hpp-Dateien werden aus den Pascal-Dateien erzeugt.



  • So,

    habe mal wieder ein bisschen rumprobiert und gelesen.
    Ich habe mir eine Oberfläche gebaut, die aus einen Menü zum Beenden der Anwendung dient, sowie einem Eingabefeld EDIT (TEdit).

    Wenn ich in das Feld etwas reinschreibe und auf Klick eines Speedbuttons einer Variablen zuordne, kann ich über START\AUSWERTEN\.... mir den Wert anzeigen lassen. Das funktioniert auch, aber nur 1 Mal nach dem Start der Anwendung 😕 Warum? Muss ich eine Endlosschleife programmieren? Ich denke, das macht der Compiler selbst, oder?
    Finde ich irgendwie umständlich, das Ganze.
    Bei meinem IDE zur PIC Programmierung kann ich mir alle Variablen in ein Fenster packen und immer fleissig anzeigen lassen.

    Wenn ich nun den Inhalt der Variablen wieder in einem Feld anzeigen lassen möchte, welchen Typ muss ich da wählen?
    EDIT: Das habe ich gerade selbst gelöst: Edit2 -> Text = Textvar;

    Als nächstes möchte ich einen Zahlenwert einer dieser Anzeigen aufdrücken, damit die was anzeigen. Wir die nächste Hürde werden 🕶 🕶

    Ich weiß, alles stinklangweiliges Zeug für euch, aber ich stehe auf dem Schlauch 🙂 🙂

    Gruß

    Uwe



  • Wenn du auf deinen Button klickst, dann löst du ein sogenanntes OnClick Event aus.
    Das wird genauso oft ausgeführt wie du den Button klickst. Wenn nur einmal, dann zeigt er dir den Wert auch nur einmal an.
    Wenn du auf Veränderungen des Editfeldes reagieren willst, dann hat dieses ebenfalls ein Event (OnChange).
    Wenn du unabhängig davon laufend irgendwelche Sachen berechnen willst, und die Werte dann anzeigen lassen willst, dann hast du wirklich nur die Möglichkeit entweder per Endlosschleife (nach z.B. dem OnClick) oder aber per Auslagerung in einen extra Thread das zu tun.
    Diese Komponenten bieten sogar eine in einer Komponente gekapselte Thread Klasse.
    Alternativ, wenn es nicht so ganz auf die Genauigkeit der abgefragten Werte ankommt, kannst du auch einen Timer benutzen.Dabei flutschen dir natürlich meist irgendwelche Werte durch und das währe somit nur eine "Schein Aktualisierung" und nicht zu empfehlen.

    Diese Anzeigen haben meist irgendeine Eigenschaft wie z.B. Value oder Position, mit denen du deíne Werte anzeigen lassen kannst.
    Wenn du das mit einer Endlosschleife löst, dann wirkt ein
    Application->ProcessMessages() der "Versteinerung" deines Programmes entgegen.
    Das heisst, dann reagiert dein Programm auch noch auf Klicks. 😉



  • Hallo Pfadfinder,

    vielen Dank für deine Erklärungen.
    Das mit dem Auslesen hatte ich auch so verstanden, aber wenn ich Werte eingegeben hatte und diese auf Knopfdruck übernommen hatte, wurde die angezeigte Variable nicht aktualisiert. Erst wenn ich das Programm angehalten hatte und wieder gestartet hatte, wurde wieder ein Wert angenommen.
    Werde das noch mal genauer untersuchen, evtl. liegt der Fehler auch nur in mangelhafter Bedienung 😃

    Das mit den Anzeigen schaue ich mir mal genauer an, ggf. poste ich mal den Code, wenn ich nicht weiterkomme.

    Salut

    Uwe



  • Soooo,

    habe mal wieder ein wenig rumprobiert. Um in ein Feld eine Zahl einzugeben (und nur eine Zahl), habe ich mir folgende Komponente runtergeladen und installiert. Leider finde ich keinen Weg, dieses Feld auszulesen und einer Variablen zu zuweisen. Die Variable habe ich "zahl" genannt und als "int" deklariert, da nur ganze Zahlen eingegeben werden.

    In der SpeedButton Funktion will ich auf Knopfdruck den Wert übernehmen. Dazu habe ich

    zahl = ZahlEdit1;
    

    eigegeben.
    Dies wird vom Compiler mit folgender Meldung abgelehnt:" Konvertierung von TZahlEdit nach int nicht möglich".

    Nehme ich "double": "Unzulässige Verwendung einer Flieskommazahl" (was ich ja noch verstehe).

    Wenn ich

    zahl = ZahlEdit1;
    

    eingebe, muss da noch was hinter? Wenn ich Text aus einem Edit Feld lade, muss da immer noch ein "-> Text" hinter ...

    Wer kann mir hier helfen?

    Gruß

    Uwe



  • Hallo

    ZahlEdit1 ist nur ein Pointer, den kannst du nicht direkt benutzen um die Zahl in dem Control auslesen. Dazu brauchst du einer der Eigenschaften des Controls, wie du schon selber am Beispiel von TEdit::Text feststellst. Wie die Eigenschaft von TZahlEdit heißt kannst du sicher in der Doku oder im Quellcode der Komponente nachlesen.

    bis bald
    akari



  • Hallo,
    Hatte doch schon geschrieben, das sich diese Eigenschaften meist entweder "Value" oder "Position" nennen.
    Hab zur Zeit keinen Zugriff auf meinen anderen Rechner, wo ich alles installiert hatte (Systemcrash). 😞



  • Hallo

    Dann hätten wir das auch geklärt. Weitere Fragen bitte in neue Threads mit passenden Titeln.

    bis bald
    akari


Anmelden zum Antworten