Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Name verweist auf ein Stringliteral. Schreibzugriffe auf Stringliterale sind nicht erlaubt. Selbst wenn du ein Literal verändern dürftest, dürftest du nichts hinten anhängen, denn dafür wird kein Speicher reserviert. Du musst ein char-Array anlegen, und du musst dafür sorgen, dass es für den ganzen String groß genug ist.
  2. Dann solltest du dir die Dokumentation der beteiligten Klassen ansehen, angefangen bei PrintDocument.
  3. Das ist keine ausreichende Fehlerbeschreibung. Zeig den relevanten Code und die Fehlermeldung, falls du eine bekommst. Falls nicht, beschreibe, wie sich das beobachtete vom gewünschten Verhalten unterscheidet.
  4. Tja, das alles versteckt das Betriebssystem aber vor dir, damit du dein Programm nicht an zehntausende Kombinationen von Druckermodell und Anschlussart anpassen musst. Außer natürlich, man ist "Hardcodecoder" und macht so etwas gern Das ist genau das, was zum Drucken nötig ist.
  5. Das liegt daran, dass der dritte Parameter von substr nicht der Endpunkt ist, sondern die Länge.
  6. Der Code ist falsch. Er funktioniert bei diesen Daten nur zufällig, weil die Teilstrings die passende Länge haben. Versuch so etwas nicht mit Trial&Error zu lösen.
  7. fgets kommt normalerweise aus <stdio.h>. Warum versteifst du dich denn so auf eine DLL? Wenn du da so frei in C programmieren kannst, dass du fgets benutzen kannst, brauchst du weder eine Funktion noch eine DLL, das kannst du doch einfach so in deinen Code schreiben. Angenommen, zeile sei das char-Array, in das du mit fgets einliest, und du willst ab dem 7. Zeichen 10 Zeichen rauslesen: char* substr = &zeile[6]; zeile[16] = '\0';[/code] Dann zeigt substr auf den Teilstring, den du extrahieren willst. Allgemein setzt du einen Zeiger auf den Anfang des Teilstrings, und ersetzt das Zeichen dahinter durch ein Nullbyte, wodurch das Stringende markiert wird. Der Zeiger ist aber nur solange gültig, wie das Array zeile existiert. Wenn du den Inhalt länger brauchst, musst du ihn kopieren. Char kann von Bibliotheken verarbeitet werden, das ist nicht das Problem. Das Problem ist, dass in char kein String reinpasst. Auch fgets arbeitet nicht mit char, sondern mit char-[b]Zeigern[/b], die auf hinreichend große Arrays verweisen müssen. Nein. Nicht char. Char ist [b]ein einzelnes Zeichen[/b]. Wie gesagt, ich halte das für unnötig umständlich. Was du willst, kann man im einfachsten Fall mit zwei Zeilen Code lösen. Wenn du fgets verwenden kannst, hast du den vermutlich schon. Irgendwelche Header irgendwoher zu kopieren, klappt übrigens praktisch nie. Du musst schon die Header benutzen, die zu deinem Compiler gehören. Und die sollten immer dabei sein. Übrigens: "Der Compiler meckert" ist nie eine ausreichende Problembeschreibung. D.h. es ist ein privates Spaßprojekt? Und wie wendest du fgets an? Und die, die das in 10 Minuten können, mussten sich auch erst einmal einarbeiten. Sollte diese Investition sich nicht lohnen? Übrigens, wenn das irgendeinen betrieblichen Kontext hat, solltest du [b]dringend[/b] mit deinem Vorgesetzten klären, ob du irgendwelchen fremden ausführbaren Code, dessen Inhalt und Funktion du nicht kennst und auch nicht prüfen kannst, einbringen darfst. In so eine DLL kann man so ziemlich alles reinstecken.
  8. Einer Bibliothek kannst du nichts übergeben, und sie kann auch nichts zurückgeben. Das geht mit Funktionen. Du kannst allerdings Funktionen in eine Bibliothek stecken. Der Editor hat damit eigentlich nichts zu tun. Entscheidend ist, was der Compiler kann. Datentyp char bedeutet ein einzelnes Zeichen. Strings sind Arrays von char. Und hier fangen die Probleme an. Arrays sind schlechte Funktionsparameter (sie zerfallen zu Zeigern) und noch schlechtere Rückgabewerte (geht gar nicht). Das sind keine ANSI-C-Funktionen. Ohne dass du mehr über das System erzählst und den Compiler stellst oder zumindest nennst, falls er frei verfügbar ist, nein. C ist auf Quellcodeebene plattformunabhängig, nicht auf Ebene der erzeugten ausführbaren Dateien. Soll das eine Auftragsarbeit werden? Mag sein, Pragmas sind compilerimplementationsspezifisch.
  9. Darum geht's hier doch überhaupt nicht. Es geht darum, dass ein Bäcker versucht, einen Fehler mit einer Mehlallergie zu entschuldigen. Und damit disqualifiziert er sich selbst, auch wenn die Allergie vorher nicht bekannt war. Du bist und bleibst neben dem Thema.
  10. Ist es nicht. Diese Begründung hat hier aber auch niemand gebracht. Hier hat auch niemand so einen Satz geäußert. Du verbeißt dich da anscheinend in etwas, was hier niemand so gesagt hat. Es geht nicht darum, dass jemand einen Fehler macht. Es geht darum, wie man diesen Fehler erklärt, entschuldigt oder rechtfertigt. Einen Lerneffekt wird es kaum geben, wenn man den Fehler nicht durch einen selbst, sondern durch äußere Umstände verursacht sieht. Genau das ist ja das bequeme an solchen Erklärungen: Keine Notwendigkeit eigener Verhaltensänderungen.
  11. Es ist aber nicht sinnvoll, das beim Debugging zu machen. Das Laufzeitverhalten der Release-Version kann ganz anders sein.
  12. Welche Informationen hoffst du denn aus so einer Messung zu bekommen? Beim Debugging benutzt man ja üblicherweise nicht optimierte Versionen. Da sind Geschwindigkeitsmessungen aber nicht sonderlich sinnvoll. Das Debugging selbst verzerrt das Laufzeitverhalten auch.
  13. Sind die Buttons gleich groß? Dürfen sie gedreht werden? Beliebig angepasst? Oder gibt's da irgendwelche Beschränkungen, wie minimale Größe oder Beibehalten des Seitenverhältnisses?
  14. rechen ist ein int, das ist immer eine Zahl. Diese Prüfung ist insofern Unsinn. isdigit (und die anderen is...-Funktionen) prüfen immer Zeichen einer Zeichenkette. Wenn man sofort in numerische variablen einliest, kann man mit ihnen nichts mehr anfangen. Aber man sollte so etwas ohnehin besser dem jeweiligen Eingabeoperator überlassen. Die Prüfung, ob eine eingegebene Zeichenkette eine gültige Fließkommazahl ist, ist nicht ganz einfach.
  15. Du kannst das abfangen. Siehe hier: http://forum.fachinformatiker.de/c-c/139793-erstellen-doppeltverketteten-liste.html#post1244301 Indem du die Variable zahl nach dem ersten Durchlauf nicht vom Benutzer eingeben lässt, sondern ihr den Wert von ergebnis zuweist. Dazu müsstest du den ersten Schleifendurchlauf erkennen können. Du könntest eine bool-Variable hinzufügen (das wäre sauberer) oder die Variable antwort benutzen, denn die ist nur beim ersten Durchlauf ' ', danach hat sie den Wert 'j'.
  16. In Postorder-Reihenfolge steht die Wurzel ganz rechts (V). Bei Inorder steht die Wurzel zwischen dem linken und dem rechten Teilbaum. Der linke Teilbaum besteht also aus A, L, I, E, der rechte aus R, L, M, G, S. Auf die Teilbäume wendet man dann dieselbe Vorgehensweise an.
  17. Sieht gut aus.
  18. Genau, wenn an dieser Stelle die Bedingung true ergibt, fängt die Schleife wieder von vorne an. Die do/while-Schleife ist für Anfänger am einfachsten zu verstehen. Sie wird immer mindestens einmal durchlaufen, und am Ende kann man eine Wiederholungsbedingung angeben. Bei der while-Schleife muss man die Bedingung am Anfang angeben, dadurch kann es sein, dass die Schleife komplett übersprungen wird, wenn die Bedingung gleich am Anfang false ergibt. Die for-Schleife ist eine spezialisierte Schleifenform mit einem Initialisierungs- und einem Schritt-Teil. Letztlich sind sie aber alle äquivalent, man kann jeden Schleifentyp in jeden anderen überführen. Man kann übrings auch mit break aus der innersten aktiven Schleife herausspringen und mit continue einen neuen Schleifendurchlauf starten. Beide Anweisungen verhalten sich insofern wie goto, haben aber nicht denselben unstrukturierten Beigeschmack, weil man nicht irgendwohin springen kann, sondern eben nur an den Anfang oder ans Ende der Schleife.
  19. Ich gebe dir einmal eine Starthilfe: #include <iostream> using namespace std; int main(int argc, char *argv[]) { float zahl1, zahl2, ergebnis; int rechen; char antwort = ' '; do { cout<< " Wählen Sie eine Rechenart aus : Addition [1] Subtraktion [2] Multiplikation [3] Division [4]. " ; cin>> rechen; cout<< " Bitte geben Sie die erste zahl ein: "; cin>>zahl1; cout<<endl; cout<< " Bitte geben Sie die zweite Zahl ein: "; cin>>zahl2; switch (rechen) { case 1 : ergebnis=zahl1+zahl2; break; case 2 : ergebnis=zahl1-zahl2; //if (zahl1<zahl2) {cout<< "nicht moeglich!";} break; case 3 : ergebnis=zahl1*zahl2; break; case 4 : ergebnis=zahl1/zahl2; break; } cout<<"Das Ergenbis lautet: "<<ergebnis<<endl; do { cout<<"noch ein Versuch ? Ja (j) /Nein (n): "; cin>>antwort; if (antwort != 'j' && antwort != 'n') cout<< "Sie koennen nur j oder n eingeben"<<endl; } while(antwort != 'j' && antwort != 'n'); } while(antwort == 'j'); return EXIT_SUCCESS; }[/code]Das ist dein Programm, ohne gotos, und ordentlich eingerückt. Du solltest undebingt auf eine richtige Einrückung achten, sonst geht dir bei größeren Programmen ganz schnell die Übersicht verloren.
  20. Du solltest auch sagen, nach welchem Maßstab dieser Code sehr gut sein soll. Geschwindigkeit, Länge, Verständlichkeit? Sehr gut wäre dieser Code für mich allenfalls dann, wenn das Ziel lautet, die Verständlichkeit zu verringen oder den Wartungsaufwand zu erhöhen.
  21. Bevor du da irgendetwas hinzufügst, solltest du die gotos loswerden. So etwas soll man sich gar nicht erst angewöhnen, wenn es eine einfache Schleife auch tut.
  22. Klotzkopp

    C# auf InternetSql DB

    Du öffnest dadurch die komplette Funktionalität des DBMS nach außen (z.B. Tabellen löschen, Benutzerrechte ändern), und dein einziger Schutz sind Benutzername und Passwort. Wenn du nur lokale Zugriffe über eine Anwendung auf dem Server erlaubst, kannst du eine definierte Schnittstelle schaffen und nur das erlauben, was für den Betrieb notwendig ist. Das verstehe ich nicht. Was meinst du mit "Desktop"? Wenn das Programm auf dem Server läuft, greift es nicht über das Internet zu.
  23. Klotzkopp

    C# auf InternetSql DB

    Das ist schon mal besser als "Internet SQL" Die entscheidende Frage ist aber immer noch, ob der MySQL-Server überhaupt von außen erreichbar ist. Üblicherweise will man genau das nämlich aus Sicherheitsgründen verhindern. Bist du der Administrator dieses Servers? Falls nein, sprich das bitte mit dem Admin ab. Und selbst wenn du den Server so konfigurierst, dass er von außen erreichbar ist, brauchst du wohl noch den hier: MySQL :: Download Connector/Net. Aber wie gesagt, die Erreichbarkeitsfrage ist die entscheidende.
  24. Klotzkopp

    C# auf InternetSql DB

    Vermutlich, weil der Begriff "Internetsqlserver" totaler Käse ist. Was für ein DBMS ist es denn? Und ist dein Server überhaupt so eingerichtet, dass die Datenbank direkt von außen erreichbar ist? Das wäre eher ungewöhnlich.
  25. Lass das i weg.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...