hi leute!
ich erstelle derzeit ein c++ programm unter linux/qt für die strömungsberechnung von rohrleitungen. dabei programmiere ich auch einige graphische outputs in der form von kurven. diese outputs werden in eigenen programmfenstern in als diagramme dargestellt. da ich neu in qt bin habe ich probleme mit der grössenänderung der fenster. ich verwende die funktion "resizeEvent" und habe das mit meinen diagrammen schon ganz gut im griff. nur mit den push-buttons in den fenstern habe ich da so meine probleme. diese verschieben sich zwar mit, dublizieren bzw. vervielfachen sich aber.
wie kann ich dieses problem beheben? ist das überhaupt möglich? oder müssen die buttons an eine fixe stelle gesetzt werden wo sie dann bleiben? unter visual c++ ist es möglich die buttons mitzuverschieben...
thanx
alex
Jetzt hast DU mich darauf gebracht, wie das gegangen ist:
ich hatte mysqld verwendet, man braucht aber mysqld-opt (oder so ähnlich)
mit dem ist der Server dann gestartet.
der client war eigentlich kein problem mehr.
jetzt starte ich den server über die startupservices (chkconfig -a mysqld)
LG, Joe
Wie wäre es mit einem Perl-Script?
Das Script habe ich grade on-the-fly in den Editor getippt ohne es testen. Kann also noch ein/zwei Fehler beinhalten.
#!/bin/perl
#----------------------------------
# obligatorische Module
#
use strict;
use warnings;
use diagnostics;
#----------------------------------
# spezielle Module fuer dieses Script
#
use MP3::Info; # fuer get_mp3tag() remove_mp3tag() set_mp3tag
#----------------------------------
#
# kleine Schleife ueber alle MP3 Dateien im aktuellen Verzeichnis
#
while(<*.mp3>) {
my $datei = $_;
#
# TAG info auslesen
#
my $tag = get_mp3tag($datei) or die "No TAG info";
#
# Kommentar loeschen
#
$tag->{COMMENT} = '';
#
# alte TAG info aus dem MP3 entfernen (optional)
#
remove_mp3tag($datei);
#
# TAG info in das MP3 speichern
#
set_mp3tag($datei, $tag);
}
__END__
nicht zu vergessen:
auch von Stevens (und ein wenig grundlegender als IPC):
"advanced programming in the unix environment"
bzw. die dt. übersetzung von helmut herold:
unix/linux systemprogrammierung (beide addison wesley)
will man noch etwas tiefer rein:
"linux kernel programmierung" (michael beck; addison wesley)
bzw. in english:
"Understanding the Linux Kernel. From I/ O Ports to Process Management"
(von Daniel P. Bovet, Marco Cesati; O'Reilley )
viel spass
Hallo Zusammen,
Ich habe ein Server der zwei Ports öffnet (4950 und 4951), der eine (4950) ist für "normale" Daten da, und der andere (4951) ist für u-Law (Audio) Daten gedacht.
Nun, mit select werden die Filedeskriptoren gepollt und wenn einer gleich "dataListener" oder "audioListener" ist werden dann die entsprechenden Anmeldungs-Threads gestartet.
Ich habe es so gelöst:
Client meldet sich an (4950) wird nach dem User Name gefragt und sendet dann den Namen. In einer Struktur im Server wird dann der Filedescriptor gespeichert.
Client fragt nach seinem Filedeskriptor nach (4950), der Server sendet ihn.
Client meldet sich wieder an, diesmal aber auf port 4951 und der Server fragt nach dem Filedeskriptor der vorher gesendet wurde, der Client sendet dann den Filedeskriptor. Der Server ordnet dann der neuen Filedeskriptor (der des Ports 4951 "Audio Port") der Struktur. Damit kann habe ich dann ein "Pärchen" von Filedescriptoren (Data/Audio) einem Client zugeordnet.
Ist eigentlich kompliziert, gibt's einen anderen Weg? Um das Ganze eleganter zu lösen.
Gruss
@kingruedi
Danke, das ist wohl eine recht sichere möglichkeit, habe in den man-pages und im info gelesen, das die Sperrung bei Programmende (ob gewollt oder nicht gewollt) automtaisch beendet wird, was natürlich das handling vereinfacht.
Tschau
arni
@headhunter:
was willst du machen? den md5 wert für die datei berechnen lassen und dann vergleichen ob´s das richtige ist?
weiss ja nicht ob das so clever ist. dann musst du ja die den md5wert im aufrufenden programm hardcoden, was meiner meinung nach ja noch wartungsaufwendiger ist, als den pfad hardzucoden. du musst ja dann jedesmal den wert ändern, falls du das aufzurufende programm änderst!
oder hab ich dich da falsch verstanden??
hmm,
race condition ...
parent und child laufen parallel.
du baust den lock im parent.
währenddessen öffnet und liest das child schon mal das file während das parent noch das lock baut.
wie sind denn eigentlich die defaults von flock-new ??
ist da l_type schon gesetzt ??
wenn nicht, wie soll er dann in die erste while() reinkommen ??
mach doch mal vorher noch nen F_GETLK.
du musst ein Filesystem darauf erzeugen, dass geht ganz einfach, dafür gibt es die ganzen mkfs.* Programme in /sbin.
Wenn du Ext2 haben willst, musst du mkfs.ext2 nehmen etc.
Schau dir am besten mal die entspr. Manpages an
danke!! hab das problem inzwischen selber hinbekommen, war teilweise auch ein prob mit der elektronik (wenn das parallele kabel zum programmieren des controllers angesteckt war, hab ich keine daten über seriel reinbekommen (komicherweise nur unter Linux, unter Win**** gehts auch mit dem kabel)) (vielleicht weiß da ja auch noch jemand was) ansonsten hab ich mir selber ein c++ proggie geschrieben, dass dem von Martin G. sehr ähnelt... *g* (ich hab da aber auch noch ne anweisung drinne zum anschalten des RAW-Modus)
QVersion() kann da innerhalb des codes weiterhelfen.
dann kann man im zweifel abbrechen und abhaengingkeiten angeben.
z.B. 'QT => 3.2 needed to run...'
Doktor Prokt schrieb:
Die Qt-Dokumentation ist so ausführlich und mit Beispielen versehen, daß du kein Tutorial o.ä. brauchst.
Im übrigen sind in der QT-Docu auch schon 2 gute Tutorials enthalten.
NeEd_iNpUt
Achso - danke
Problem hat sich inzwischen auch gelöst.
#include <sdtio.h>
void main()
{
FILE *fp = popen ("/usr/lib/sendmail -t", "w");
fprintf (fp, "To: user@host.de\nCC: user2@host.de\nSubject: Hallo\n\nbodytext");
pclose (fp);
}
So funktioniert es jetzt auch bei mir
es gibt verschiedene sog. Groupware Lösungen
sogar einen direkten Exchange Ersatz
http://oser.sourceforge.net/
ansonsten siehe
http://www.opengroupware.org/
oder benutz mal
http://freshmeat.net/