-
Am nächsten kommt dem wohl das in Beitrag #4 und #6 erwähnte.
Aber auch in dem in #6 verlinken Video kommt statt cmake das Programm pkg-config zum Einsatz. Das wird direkt in Compileraufrufen verwendet und baut die ganzen includes und Einstellungen für die Verwendung einer Bibliothek automatisch zusammen, wenn diese bei pkg-config registriert ist. Keine Ahnung, ob sich das mit Geany verträgt.
-
Ziel muss sein:
nur 1 Zeile schreiben, um einen File per Mini-Browserfenster auszuwählen und zu öffnen - alles andere ist zu kompliziert.
fp = OpenFileDialog(); // File auswählen und öffnen über ein Filebrowser-Auswahlmenü
makec und makefile und make: niemals!
ich trage ggf. die neuern extra-Parameter noch zusätzlich in Geany ein (was mittlerweile schon lang genug ist, um die komplette British Library zu füllen
- und bei Delphi, Borland C++ Builder und Arduino IDE musste ich mich gottseidank noch nichtmal damit rumschlagen! ) :-/
-
Hallo,
das geht evtl. über eine Pipe. zenity bietet einen FileDialog für X-Server. Da ich keine GUI nutze, kann ich es nicht testen.
Folgender Aufruf sollte den gewählten Dateinamen zurückgeben:
Code:
zenity --file-selection
Die Ausgabe dann halt per Pipe einlesen. Das Programm läuft dann halt nur, wenn zenity auch installiert ist.
-
hallo,
ich bin nicht sicher, ob ich das richtig verstehe, denn ich kenne auch keinen X Server.
ist das so in der Art zu verstehen...?
FILE * fp;
fp << system("zenity --file-selection");
:?:
-
Hallo,
X-Server ist der 'Fensterverwalterer'. Normal startest Du die GUI mit startX.
Eine Pipe mache ich normal mit popen auf.
Hier ein ungetestetes Beispiel aus dem Kopf
Code:
FILE *f;
if(!(f = popen("zenity --file-selection", "r"))){
strcpy(Dateiname,"Falsch");
exit(1);
}
char Text[1024]="";
fgets(Text, sizeof(Text), f);
fclose(f);
if(strlen(Text)<2){ //Kein Dateiname übergeben / Abbrechen geklickt, etc
strcpy(Dateiname,"Falsch");
}else{ //Dateiname sollte in Text stehen.
strcpy(Dateiname,Text);
}
Damit würde ich mal probieren eine gewünschte Funktion zu bauen.
-
danke, das sieht ja sehr bekannt aus:
f = popen("zenity --file-selection", "r");
... genau gleich wie fopen!
f = fopen("/path/filename", "r");
schön, wenn man auf was bekanntes trifft :)
Bevor ich jetzt 3 Stunden brauche , um zenity zu installieren, und dann klappts doch nicht ....
Könnte das vlt einmal jemand vor-testen, der bereits zenity bei sich auf dem Pi installiert hat?
-
Hallo,
bei meinen Raspis ist das drauf. Evtl. ist es standard.?. Einfach mal den Befehl aufrufen und schauen, was passiert.
-
Zenity scheint auf Debian Betriebssystemen Standard zu sein.
Hab ein bischen mit Peterfido's Code gespielt:
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
FILE *f;
char Dateiname[1024] = "";
int c;
/* Zenity für File-Dialog benutzen */
freopen("/dev/null", "w", stderr); // Warnungen von zenity ignorieren
if(!(f = popen("zenity --file-selection", "r"))){
strcpy(Dateiname, "Falsch");
exit(1);
}
freopen("/dev/tty", "w", stderr);
fgets(Dateiname, sizeof(Dateiname), f);
fclose(f);
if(strlen(Dateiname) < 2){ //Kein Dateiname übergeben / Abbrechen geklickt, etc
strcpy(Dateiname, "Falsch");
}
/* Inhalt der Datei ausgeben */
printf("Dateiname: %s", Dateiname);
Dateiname[strlen(Dateiname)-1] = '\0'; // '\n'-Stringende entfernen
f = fopen(Dateiname, "r");
if (f) {
while ((c = getc(f)) != EOF)
putchar(c);
fclose(f);
}
}
-
bei der letzten GT Deinstallation scheint er mir das g++ gelöscht zu haben: ich kann nicht mehr mit g++ compilieren ("g++ not found")
was ein Sch**ss.
Jetzt muss ich erst mal schauen, wo ich ein altes Pi Image neu auf SD laden kann :mad:
Linux: ich könnte ko**en. :mad:
-
Hallo,
zum programmieren / rumtesten nutze ich einen extra Pi. Dieser hat alles Mögliche drauf und deinstalliert wird da normal nix. Wenn die Programme dann auf einem anderen Pi laufen sollen und irgendwas fehlt, installiere ich es da nach.
Wenn nur g++ fehlt, dann kannst Du das auch einzeln nachinstallieren.
Als Backup habe ich ein BASH-Script, welches auf dem NAS immer den kompletten Inhalt der SD-Karte ablegt. Das Script ist auf allen Raspis vorhanden und wird vor / nach größeren Änderungen ausgeführt.
Code:
#!/bin/bash
#
# DS mounten
#
MountPoint=/tmp/ds
RaspiName=RaspiBPlus_
RaspiName=$RaspiName$(date +%Y%m%d-%k%M%S)
echo $RaspiName
service rpcbind start
if [ ! -e $MountPoint ]; then
mkdir $MountPoint
fi
mount -t nfs 192.168.2.15:/volume1/Raspberry $MountPoint
dd if=/dev/mmcblk0 of=$MountPoint/$RaspiName.img bs=1M
umount $MountPoint
service rpcbind stop
Wichtig ist, dass die Konsole / SSH Session nicht geschlossen wird, während das Script läuft. Zurückspielen geht per Windows Tool win32diskimager-binary06.