cout und cin ?
btw: Notfalls kannst du es auch einfach per Programmargument übergeben...
Dann muss deine Main aber so aussehen:
int main(int argc, char* argv[])
Das wäre zumindest C- und C++-konform.
Naja, ich hatte einen kleinen Denkfehler.
Ich dachte ich kann auf einen Verbundschlüssel mit Hilfe von einer Spalte in einer anderen Tabelle drauf Verweisen.
Quasi TabelleB.Col1 verweist auf TabelleA.Verbundschlüssel.
Aber geht wohl nicht; entspricht auch nicht einer Normalisierung, also rotz -> weggehauen und nun geh ich wie gewohnt über einen ID-PK
Grüße.
Ich hab hier eine Tabelle mit einem Verbundschlüssel (PK über 2 Spalten), eine ist ein String und die andere ein Integer. (Beide sind FKs, ich wollte nur eine m-n-Beziehung abstrahieren) Zu Übersicht nenne ich die mal "Tabelle A"
Jetzt ist die Frage, ich habe eine Tabelle (Tabelle , die ich mit der oben beschriebenen Tabelle verknüpfen möchte - soweit kein Problem.
Nur wie identifiziere ich jetzt einen Datensatz (oder auch mehr) von B anhand von A?
Momentan hab ich es einfach mit einer Selectanweisung probiert. Leider aktzepiert er da nur den String in Tabelle A als Vergleich, quasi:
SELECT * FROM TAB_B WHERE TAB_B.VerbundFK = 'Test'
Ich will aber beide Spalten abprüfen (halt eindeutig identifizieren).
Meine Frage: Geht das? Wenn ja, wie?
Ansonsten muss ich halt doch erst noch ne Spalte für den PK in Tabelle A erzeugen... (Ich wollte Verbundschlüssel eigentlich nur mal testen.)
achja: System ist Access.
Das stört nicht, die Funktionalität ist die selbe.
Einfach <winbase.h> und <windows.h> einbinden.
btw: bei google findet man auch genug andere Beispiele und Libs.
...
Und wenn du mehr als 6 Labels hast, kommt es zu einem Bufferüberlauf.
...
Und wenn du schon arrays benutzen willst, dann nimm wenigstens Stringarrays wenn du die eh nur mit Strings füllst. Dann brauchst du später nicht zu casten.
...
Das kommt im Endeffekt aufs selbe raus.
Und es ist nicht durch Eclipse, sonder durch das JDK vorgegeben, welche Funktionen etwas werfen.
im Endeffekt kannst du selber Exceptions werfen, wenn z.B. Werte außerhalb des Gültigkeitsbereiches liegen (siehe Beispiel oben).
int readInCards()
{
[INDENT]
cout<<"\t Bitte waehlen Sie die Ticketanzahl aus!"<<endl;
cout<<"\t Es sind maximal 5 Tickets einer Kategorie verfuegbar!"<<endl;
cout<<"\t Abbruch mit beliebiger Taste!"<<endl;
cin>>anzahl; [COLOR="red"]//<-- ist das ein char?! O.o[/COLOR]
anzahlKarten = anzahl - 48; //ASCII-Code
if (anzahlKarten < 1 || anzahlKarten > 5) throw "Falsche Eingabe";
return anzahlKarten;
[/INDENT]
}
erm...
Etwas unlogisch.
Sache erbt von Tasche und besitzt eine Tasche.
Wenn eine Sache in Tasche ist, dann ist das für mich Komposition (evtl. auch Aggregation) aber nie Generalisierung.
Welchen String? den Formatstring?
Das ergebnis von scanf wird in dem Beispiel im Array gespeichert, von daher brauchst du den hier, ja.
Und da du ihn ja wieder ausgeben willst, brauchst du ihn auch in der Ausgabe.
Wenn du deine Eingaben überprüfen willst, dann musst du auch hier wieder nachschauen, was du eingeben hast, also brauchst du auch da den Array. O.o
Zu Testzwecken würd ich einfach mal die Zeile in einen try-Block schreiben und die Exception anschauen, vielleicht steht da ja was drin.
Außerdem würd ich die Variablen noch in der SendMessage-Methode prüfen, ob die Werte alle passen.
(Ich weiß, eigentlich müssten sie's aber man kann ja nie wissen...)
ihh.
Goto ist eklig.
die if abfragen sind auch falsch.
guckst du:
char eingabe [80];
do
{
printf("\n%s\t\t", "Wort:");
scanf("%s", eingabe);
printf("\n%s:\t%s\n", "Eingabe", eingabe);
} while (strcmp(eingabe, "nein")!=0);
Einlesen, ausgeben und wenn nein eingeben wurde, wird abgebrochen.
Kann ja nicht gehen.
button[0].fsState = TBSTATE_ENABLED;
button[0].fsStyle = TBSTYLE_BUTTON ;
button[0].idCommand = 10000 + i;
[...] AddButtons(1,button);
Ergo: Du verweißt auf 1 und dabei ist das letzte Element 0;
Tausch mal die 1 gegen 0 aus.
PS:
Ich kann's mir einfach nicht verkneifen:
I beat the SwordMaster. :bimei
Edit: Och menno, ich sollte richtig lesen.
Number of buttons nicht of Button, mist dann geht das ja auch ne...
Hast du mal durchdebuggt?
endl ist das gleiche wie '\n'.
Also mit cout << ch << endl << endl; hast du dann immer noch ne Leerzeile.
Wie jetzt? Du willst mit Scanf Wörter einlesen - das hab ich verstanden.
Wo rattert er durch?
PS:
Weil du ja die Pfeileingaben angesprochen hattest:
int main(int argc, char* argv[])
{
int ch;
do {
ch = _getch();
if (ch == 0xE0)
ch = _getch();
switch (ch)
{
case 0x4B:
cout << "linker Pfeil" << endl;
break;
case 0x4D:
cout << "rechter Pfeil" << endl;
break;
case 0x48:
cout << "vorderer Pfeil" << endl;
break;
case 0x50:
cout << "hinterer Pfeil" << endl;
break;
default:
cout << "Anderes Zeichen" << endl;
}
} while (ch != 0x1B);
return 0;
}
nuja, war einfach nur ein Projekt, dass ich schnell mit VS 2005 erzeugt hab...
Hier ist mal der "Standard":
#include <conio.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int ch;
do {
ch = _getch();
if (ch == 0xE0)
ch = _getch();
cout << ch << endl;
} while (ch != 0x1B);
getchar();
return 0;
}
Sollte gehen. :floet:
Edit: Ok, du hast es selber hingekriegt.
Fein, dann siehst du den Zahlencode, welche jeder Tastendruck zurückliefert - dann brauchst du jetzt ja nur anhand der Zahl zu reagieren.
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int ch;
do {
ch = _getch();
if (ch == 0xE0)
ch = _getch();
cout << ch << endl;
} while (ch != 0x1B);
getchar();
return 0;
}
Cursortasten geben zwei Zahlen zurück, zu erst die Sequenzzahl für Pfeiltaste (bei Windows 0xE0 [224], unter linux war es glaub ich was anderes) und dann ihren eigentlichen Code (deswegen das if in der Schleife).
Achja: 0x1B (27) == ESC
getchar; Standardfunktion; liest Buchstaben, Zahlen und den ganzen Mist; buffert; zeigt am Bildschirm;
getch; nicht Standardfunktion; liest alles, buffert nicht, zeigt nicht an;
getche; nicht Standardfunktion; liest alles, buffert nicht, zeigt am Bildschirm;