Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Problem in C++

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Bad_King
gesperrt


Anmeldungsdatum: 15.04.2006
Beiträge: 455
Wohnort: nähe Stuttgart

BeitragVerfasst am: 17.11.2006, 20:06    Titel: Problem in C++ Antworten mit Zitat

Hi,

ich habe ein Problem in C++.
Ich will ein Programm programmieren, das netzwerkcomputern per net send nachrichten sendet. (Für die Schule)

Hier ist mein Code:

Code:
#include <iostream>
#include <string>
#include <stdlib>

using namespace std;

int main() {

  string msg;
  string cn;
  string sends;

  long anz;
  long i;

  //Abfrage
  cout << "Computername: ";
  cin >> cn;
  cout << "Nachricht: ";
  cin >> msg;
  cout << "Anzahl: ";
  cin >> anz;

  sends = "net send " + cn + " " + msg;

  // Die Nachricht wird anz mal gesendet
  for(i = 0; i <= anz; i++) {
  system(sends);
  }

  return 0;
}


Aber wenn ich das programm ausführen will kommt folgende Fehlermeldung:

"msgsend.cpp": E2034 Konvertierung von 'string' nach 'const char *' nicht möglich in Funktion main() in Zeile 28
"msgsend.cpp": E2342 Keine Übereinstimmung des Typs beim Parameter '__command' ('const char *' erwartet, 'string' erhalten) in Funktion main() in Zeile 28
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 17.11.2006, 20:14    Titel: Antworten mit Zitat

Interessant. Wenn du uns jetzt noch Rechte geben würdest, die Fehlermeldung anzuschaun - oder wenigstens die Fehlermeldung textlich nennen würdest... Pfff....
Ich vermute allerdings, dass der Fehler in folgender Zeile kommt (zu faul zum Probieren Zunge rausstrecken):
Code:

sends = "net send " + cn + " " + msg;

_Lern_ erstmal C bzw. C++, eh du sinnvolle Programme schreiben willst. Zunge rausstrecken zwinkern
Außerdem wär's auch ganz hilfreich, wenn man sich mal die Headerdateien der verwendeten Libs anschauen würde - aber das scheinst du ja offensichtlich nicht gelernt zu haben...

Ersteinmal würde ich ein char-Array verwenden. Und dann arbeitet man nicht mit + (is' in C(++) nur ein mathematischer Operator) sondern mit strcopy. Wie gesagt, schau dir die Headerdatei string.h an.

Übrigens: demnächst bitte sagen, welchen Compiler du verwendest. djgpp, MinGW, ...
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bad_King
gesperrt


Anmeldungsdatum: 15.04.2006
Beiträge: 455
Wohnort: nähe Stuttgart

BeitragVerfasst am: 17.11.2006, 20:18    Titel: Antworten mit Zitat

Man kann die Fehlermeldung sehen und sie ist auch Textlich.

Ich verwende den Borland C++Builder X
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 17.11.2006, 20:48    Titel: Antworten mit Zitat

Nimms mir nicht übel, aber du solltest erstmal ein wenig C/C++ lernen.
in C nimmt man immer "char ptr" (byte ptr), also ein byte/ubyte array, in dem text ist. In den Fehlermeldungen steht auch, das string zu char * nicht konvertiert werden kann, ich weiß noch nichtmal, ob es string überhaupt in C gibt grinsen

Am besten wäre, wenn du mal die Grundlagen von C lernst. zwinkern
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 17.11.2006, 20:53    Titel: Antworten mit Zitat

programmierer hat Folgendes geschrieben:
(...)ich weiß noch nichtmal, ob es string überhaupt in C gibt.


Ja. Eigene Klasse, siehe "#include <string>". Recht brauchbar, aber total überladen.

MfG
Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 17.11.2006, 20:53    Titel: Antworten mit Zitat

Ja, ich feix mir gleich einen ab.
Schnell hinzueditiert, gell? Pfff....
Das system-Kommando erwartet meiner Meinung nach 'nen Char-Array, und automatisch rübercasten is' net. Also entweder du arbeitest gleich mit char-Arrays oder du castest den Typ.
Empfehle ersteres:
Code:

char msg[200];

Macht Platz für eine Nachricht von 200 Zeichen (0-Byte am Ende).

So, und die betreffenden Zeilen aus den Header-Dateien:
Code:

_CRTIMP char* __cdecl   strcpy (char*, const char*);
_CRTIMP char* __cdecl   strcat (char*, const char*);

Beispiel:
Code:

#include <iostream>
#include <string>

using namespace std;

int main()
{
  char vorname[20], zuname[30], name[51];

  cout<<"Vorname: ";
  cin>>vorname;
  cout<<"Zuname: ";
  cin>>zuname;
  strcpy(name, vorname);
  strcat(name, " ");
  strcat(name, zuname);
  cout<<name<<endl;
  system("pause");
  return EXIT_SUCCESS;
}

So, ich hab mit Absicht nicht deinen Code umgeschrieben. Zunge rausstrecken
Es dürfte aber kein Problem sein, mit Hilfe des Beispiels und der Header-Datei sich daraus einen Reim zu machen und es auf dein Net-Send-Dingens zu adaptieren.
(Also wir schreiben uns für sowas Batch-Files - warum so kompliziert? peinlich Einfach alle IP's im Raum 192.168.0.1-192.168.10.255 durchsenden lassen. Das wären jedenfalls die Rechner bei uns. grinsen)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bad_King
gesperrt


Anmeldungsdatum: 15.04.2006
Beiträge: 455
Wohnort: nähe Stuttgart

BeitragVerfasst am: 18.11.2006, 10:33    Titel: Antworten mit Zitat

Also wenn ihr mir die richtige Antwort sagt, kann ich was lernen.

edit:
Der Beitrag von Mao war hilfreich.

Das programm geht jetzt:

Code:
#include <iostream>
#include <string>
#include <stdlib>

using namespace std;

int main() {

  char cn[20], msg[100], sends[200];

  long anz;
  long i;

  //Abfrage
  cout << "Computername: ";
  cin >> cn;
  cout << "Nachricht: ";
  cin >> msg;
  cout << "Anzahl: ";
  cin >> anz;

  strcpy(sends, "net send ");
  strcat(sends, cn);
  strcat(sends, " ");
  strcat(sends, msg);


  // Die Nachricht wird anz mal gesendet
  for(i = 0; i <= anz; i++) {
  system(sends);
  }

  return EXIT_SUCCESS;
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 18.11.2006, 12:46    Titel: Antworten mit Zitat

king01 hat Folgendes geschrieben:
Man kann die Fehlermeldung sehen und sie ist auch Textlich.

Ich verwende den Borland C++Builder X


den hab ich auch, lerne ja auch gerade C++ aber der compiler is der größte dreck! ich werd mir demnächst mal VisualBasic holen.
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 18.11.2006, 12:53    Titel: Antworten mit Zitat

Um dich jetzt mal "vorzuwarnen":
Du verwendest bei der maximalen Anzahl den Datentyp long. Das macht eine maximale Anzahl von 2 147 483 647. Mehr als 2 Mrd. Anfragen sind also möglich. Wenn du den dann noch irgendwann als Unsigned Long festlegen solltest, dann kommst du sogar auf 4 294 967 295. Wie du siehst mehr als 4 Mrd. Wenn du das dann auf sagen wir 5 Rechner gleichzeitig schon bis "nur" ein paar tausend durchlaufen lässt, kann es, je nach Maximalleistung der Verbindung (weiß ja net, ob ihr FastEthernet oder Gigabit-Ethernet verwendet) sehr schnell zum Stillstand des Netzes kommen. Das hängt dann aber auch wieder von der Netzwerk-Topologie ab. Je nach oben genannter Topologie beträfe es nur einen einzigen Raum, oder das gesamte Netz. Bei uns befinden sich in einem Raum 20 Terminals - sprich Festplattenzugriffe werden übers Netzwerk zum Server weitergeleitet. (Ich denk mal, die meisten Schulen werden's so ähnlich haben.)
Und ich glaub du kannst dir vorstellen, dass der Admin des Netzes nicht unbedingt glücklich drüber wär, wenn die Terminals deswegen nicht speichern oder Zugriffe auf den Server nicht mehr möglich sind (wie in anderen Räumen mit "eigenen" Festplatten, bei denen die Home-Verzeichnisse auf den Server ausgelagert wurden).
Aber wenn du erst damit Erfahrung machen willst...
Deswegen würd ich's auf maximal 10 Anfragen mit einer Eingabe beschränken.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bad_King
gesperrt


Anmeldungsdatum: 15.04.2006
Beiträge: 455
Wohnort: nähe Stuttgart

BeitragVerfasst am: 18.11.2006, 19:51    Titel: Antworten mit Zitat

Ist doch cool wenn ich das Netzwerk zum Stillstand bringen kann happy

Ist es auch irgentwie in C++ möglich mehere ping-anfragen (bzw. Dos-Kommandos) gleichzeitig auszuführen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.11.2006, 20:02    Titel: Antworten mit Zitat

Ich wundere mich immer wieder auf's Neue, wieso so viele Leute auf zweckfreie "Manipulation von Computersystemen" abfahren... durchgeknallt Man kann ja noch halbwegs nachvollziehen, wenn die Firma A gerne das Netzwerk der Konkurrenzfirma B lahmlegen will, um daraus einen finanziellen Vorteil zu ziehen, aber so... mit den Augen rollen durchgeknallt
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 18.11.2006, 20:18    Titel: Antworten mit Zitat

Okay, mal so gesagt:
ich hab's auch schon gemacht, aber mit wesentlich einfacheren Mitteln - darin liegt der Reiz.
Wie man lesen konnte, hab ich schon oft meine Langeweile an fremden PC's ausgelassen... grinsen

Aber king01, das is' nich' unbedingt cool. Nur so lange, wie man dich noch nicht als Urheber herausgefunden hat. Und ein einigermaßen gut ausgestattetes Netzwerk reicht aus, um das herauszufinden.
Auch ihr habt bei euch (hoffentlich - wär ja genial, wenn's net so wär' durchgeknallt) jeder einen eigenen Account. Und Remotelogin wird _immer_ protokolliert. Und wenn das Netzwerk zum Stillstand gekommen ist, kann man in den Logs nachlesen von welcher IP besonders viel Traffic kam. Mag sein, dass dann beispielsweise noch Freunde "rausgefischt" werden, aber es ist auch kein Problem, den ursprünglichen Eigentümer einer Datei rauszufinden. Pfff....
Wie gesagt, ist deine Sache, ob du dich erst mit dem Admin deiner Schule anlegen willst...

Und nebenbei bemerkt ist sowas strafbar. Zunge rausstrecken
(Und es brauch jetzt keiner kommen, von wegen "da müsst ihr aber noch 2 Jahre warten, bis ich 14 bin...". mit den Augen rollen)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.11.2006, 20:35    Titel: Antworten mit Zitat

Zitat:
Und es brauch jetzt keiner kommen, von wegen "da müsst ihr aber noch 2 Jahre warten, bis ich 14 bin...". mit den Augen rollen )

Schulverweis funktioniert auch bei 12-Jährigen. durchgeknallt
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 18.11.2006, 20:58    Titel: Antworten mit Zitat

lachen
Ja, das auch. grinsen
Aber ich ging von rechtlichen Strafen aus - immerhin geht dadurch Zeit verloren. Es fällt Unterricht aus und die Schulleitung bzw. die Lehrer können nicht auf ihre Daten zugreifen, die sie vllt. gerade jetzt brauchen.
Aber an den Schulverweis hatt' ich echt nicht gedacht - damals gab's nur 2-wöchige Accountsperrung. grinsen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ebrady



Anmeldungsdatum: 06.07.2005
Beiträge: 45

BeitragVerfasst am: 18.11.2006, 21:18    Titel: Antworten mit Zitat

lachen

Sowas ähnliches mit Net Send hab ich auch schonmal gemacht. Allerdings einfach über den Taskplaner mit 1-minütigem Intervall dem armen Mitschüler Nervnachrichten geschickt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 19.11.2006, 11:46    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
damals gab's nur 2-wöchige Accountsperrung. grinsen


lol nur 2 wochen account sperrung, ich (meine ganze klasse!) hat letztes jahr im märz oder so ne internet sperre bekommen für den rest des jahres, weil wir angeblich die mäuse und tastaturen ausgesteckt haben als wir aus dem PC raum raus mussten verwundert
der admin is auch irgendwie komisch... grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 19.11.2006, 14:35    Titel: Antworten mit Zitat

Das is' schon schlimmer, als du denkst. zwinkern
Da im Unterricht bei uns viel die Computer mit einbezogen werden, befinden sich in unsren Home-Verzeichnissen auch dementsprechend viele Dinge für die Schule. Dumm nur, wenn man dann nicht mehr ran kann. mit dem Kopf durch die Mauer wollen
Aber so 'ne Internetsperre wäre auch dämlich, was soll ich denn dann im EDV-Unterricht machen?! Dann hab ich ja überhaupt keine Abwechslung mehr... durchgeknallt
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 19.11.2006, 17:25    Titel: Antworten mit Zitat

Lutz Ifer hat Folgendes geschrieben:
programmierer hat Folgendes geschrieben:
(...)ich weiß noch nichtmal, ob es string überhaupt in C gibt.


Ja. Eigene Klasse, siehe "#include <string>". Recht brauchbar, aber total überladen.

MfG
Lutz böse Ifer


es gibt in c keine klassen.

@topic: mit der c_str() methode kannst du einen c++-string in ein c-string (char array) casten:
Code:
system( sends.c_str() );

_________________
Er ist ein Wunder!
Nein, er ist eine Missgeburt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 20.11.2006, 17:35    Titel: Antworten mit Zitat

ich denk, das lahmlegen soll bedeuten:
ha! ich hab ein netzwerk geschrottet! kann ich! das nächste!
also: einfach mal ausprobieren um dann zu sagen: ich könnte ein netzwerk lahmlegen, so sinnlos es auch ist...


und:
juchuuuuuuu!
100ter post Yahooo!!!! vor Freude klatschen (endlich mal ein grund diese smileys zu benutzen lächeln )
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 20.11.2006, 17:59    Titel: Antworten mit Zitat

Ich weiß, warum man sowas macht bzw. warum ich sowas gemacht hab.
Ich will nicht sagen, dass ich 'nen Engelchen bin (außer der Forenengel natürlich Hammer), aber _so_ 'nen scheiß mach ich nicht mehr.
Und was solls dir bringen, ein Netzwerk lahm legen zu können?
Wenn du zu viel fernsiehst, dann bedenke aber auch mal: wann hast du im RL Zugriff auf mehrere PC's gleichzeitig die an einem großen Netzwerk angeschlossen sind? Also bitte...
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz