-intern-
-
1.Datei(Hauptdatei): con_in.cpp
#pragma hdrstop
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#include "eigene.h"//---------------------------------------------------------------------------
USEUNIT("eigene.cpp");
//---------------------------------------------------------------------------
#pragma argsusedint main(void)
{
char cAuswahl;
int auswahlM;//Programvorstellung
cout << "\t";
colour(14,8);
cprintf(" ________________________________________________________ ");
cout << "\n";
cout << "\t";
cprintf("| |");
cout << "\n";
cout << "\t";
cprintf("|");
colour(9,8);
cprintf(" Dieses Programm liest die Tasten der Tastatur ein");
colour(14,8);
cprintf(" |");
cout << "\n";
cout << "\t";
cprintf("|");
colour(9,8);
cprintf(" und gibt diese wieder aus.");
colour(14,8);
cprintf(" |");
cout << "\n";
cout << "\t";
cprintf("|__________________________________________");
colour(3,8);
cprintf(" __________");
colour(14,8);
cprintf("|");cout << "\n\n\tBitte waehlen sie : 0) Zahlenkette";
cout << "\n\t 1) Zeichenkette";
cout << "\n\t 2) Datum\n";
cout << "\t ";
do
{
gotoxy(62,8);
cout << "->";
gotoxy(65,8);
cAuswahl = getch();
colour(6,8);
if(cAuswahl=='0'||cAuswahl=='1'||cAuswahl=='2')
putch(cAuswahl);
}while(cAuswahl!='0' && cAuswahl!='1' && cAuswahl!='2');//Umwandeln
if(cAuswahl=='0')
auswahlM = 0;if(cAuswahl=='1')
auswahlM = 1;if(cAuswahl=='2')
auswahlM = 2;::conStr = con_in(10,10,20,auswahlM);
gotoxy(10,20);
cout << "Ihre Eingabe lautet : ";
cout << ::conStr;//Ende
for (int i=7; i>0; i--)
{
gotoxy(24,24);
printf("-Fenster schliesst in %d Sekunden-", i);
_sleep(1);
}return 0;
}
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2.Datei(eigene.cpp)
//---------------------------------------------------------------------------
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <string.h>
#include "eigene.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)//globale Variablen
extern string conStr;
double conNum;
bool keineSTaste;
bool ausgabe = true;int eingabeTaste(short int vorZeichen, short int sonderzeichen)
{
if (sonderzeichen == 27)
{
gotoxy(10,18);
cout <<"Sie haben ESC gedrueckt, die Eingabe wird beendet.";
ausgabe = false;
return 0;
}
if (sonderzeichen == 13)
{
gotoxy(10,18);
cout <<"Sie haben RETURN gedrueckt, die Eingabe wird beendet.";
return 0;
}
if (sonderzeichen ==
{
gotoxy(10,18);
cout <<"Sie haben BACKSPACE gedrueckt, die Eingabe wird beendet.";
return 0;
}
if(vorZeichen == 0)
{
if (sonderzeichen == 75)
{
gotoxy(10,18);
cout <<"Sie haben LINKS gedrueckt, die Eingabe wird beendet.";
return 0;
}
if (sonderzeichen == 77)
{
gotoxy(10,18);
cout <<"Sie haben RECHTS gedrueckt, die Eingabe wird beendet.";
return 0;
}
if (sonderzeichen == 80)
{
gotoxy(10,18);
cout <<"Sie haben UNTEN gedrueckt, die Eingabe wird beendet.";
return 0;
}
if (sonderzeichen == 72)
{
gotoxy(10,18);
cout <<"Sie haben OBEN gedrueckt, die Eingabe wird beendet.";
return 0;
}
}
}int sondertaste(int eingabe)
{
int sz;//Vorbereitung Sonderzeichen-Überprüfung
if(eingabe==0)
{
sz = getch();
keineSTaste = false;
}else
{
sz = eingabe;
keineSTaste = false;
}//Überprüfung Sondertaste
keineSTaste = eingabeTaste(eingabe, sz);
}void colour(int colorText, int colorBackground)
{
textcolor(colorText);
textbackground(colorBackground);
}char con_in(short int spalte,short int zeile,short int lFeld,short int typ)
{
char eingabe,eingabeD1,eingabeD2,eingabeD3,eingabeD4;
int j, j2, sz;
int i2 = 0;
int stelle = 0;
bool ausloeser1, ausloeser2;
string stringMerker;//Array
char merker[80];
char *ptrMerker = merker;//Eingabefeld-ZAHLEN
if(typ==0)
{
cout << "\n\n\n\n\n Ihre Eingabe : ";
gotoxy(spalte, 15);
colour(0,15);
for(int i=0; lFeld>i; i++)
cprintf(" ");
}//Eingabefeld-TEXT/ZAHLEN
if(typ==1)
{
cout << "\n\n\n\n\n Ihre Eingabe : ";
gotoxy(spalte, 15);
colour(0,15);
for(int i=0; lFeld>i; i++)
cprintf(" ");
}//Datum-TEXT
if(typ==2)
{
gotoxy(spalte, zeile+3);
cout << "Ihr Datum : \n";
colour(0,15);
gotoxy(spalte, zeile+5);
cprintf(" . . ");
}//Merker NULL füllen
for(int i=0; i<20; i++)
{
merker[i]='\0';
}//Courser-Position
if(typ==0||typ==1||typ==2||typ==3)
gotoxy(spalte, 15);keineSTaste = true;
//Zahlenkette
if(typ==0)
{
for(j=0; j<lFeld && keineSTaste==true; j++)
{
do
{
//Eingabe
eingabe = getch();
}while((48>eingabe || eingabe>57) && eingabe!=0 && eingabe>32);//Überprüfung Sondertaste
keineSTaste = sondertaste(eingabe);/*
//testProgramm
int dezimal, dezimal2;
dezimal = eingabe;
dezimal2 = sz;
cout << dezimal;
cout << dezimal2;
*///Zeichenbeschränkung
if((47>eingabe) || (eingabe<58))
{
//Ausgabe
if(ausgabe==true)
{
putchar(eingabe);
merker[j] = eingabe;
}
}
}merker[j] = '\0';
::conStr = merker;
}//Zeichenkette
if(typ==1)
{
for(j=0; j<lFeld && keineSTaste==true; j++)
{
do
{
//Eingabe
eingabe = getch();
}while(eingabe>47 && eingabe<58);//Überprüfung Sondertaste
keineSTaste = sondertaste(eingabe);/*
//testProgramm
int dezimal, dezimal2;
dezimal = eingabe;
dezimal2 = sz;
cout << dezimal;
cout << dezimal2;
*///Zeichenbeschränkung
if((48>eingabe) || (eingabe>57))
{
//Ausgabe
if(ausgabe==true)
{
putchar(eingabe);
merker[j] = eingabe;
}
}
}merker[j] = '\0';
::conStr = merker;
}//Datum
if(typ==2)
{
//Zeichen setzen Datum
merker[0]= '-';
merker[1]= '-';
merker[2]= '.';
merker[3]= '-';
merker[4]= '-';
merker[5]= '.';
merker[6]= '-';
merker[7]= '-';
merker[8]= '-';
merker[9]= '-';lFeld = 8;
for(j=0, j2=0; j<lFeld && keineSTaste==true; j++,j2++)
{
//Überspringen der Punkte
if(j2==2)
gotoxy(spalte+3, zeile+5);if(j2==4)
gotoxy(spalte+6, zeile+5);//1.Stelle
if(j==0)
{
do
{
eingabeD1 = getch();
keineSTaste = sondertaste(eingabeD1);
}while(eingabeD1!='0' && eingabeD1!='1' && eingabeD1!='2' && eingabeD1!='3' && keineSTaste!=0);
eingabe = eingabeD1;
}//2.Stelle
if(j==1)
{
if(eingabeD1=='3')
{
do
{
eingabeD2 = getch();
keineSTaste = sondertaste(eingabeD2);
}while(eingabeD2!='1' && eingabeD2!='0' && keineSTaste!=0);
eingabe = eingabeD2;
}
else
eingabe = getch();
keineSTaste = sondertaste(eingabe);
}//3.Stelle
if(j==2)
{
do
{
eingabeD3 = getch();
keineSTaste = sondertaste(eingabeD3);
}while(eingabeD3!='1' && eingabeD3!='0' && keineSTaste!=0);
eingabe = eingabeD3;
}//4.Stelle
if(j==3)
{
if(eingabeD3=='1')
{
do
{
eingabeD4 = getch();
keineSTaste = sondertaste(eingabeD4);
}while(eingabeD4!='2' && eingabeD4!='1' && eingabeD4!='0' && keineSTaste!=0);
eingabe = eingabeD4;
}
else
eingabe = getch();
keineSTaste = sondertaste(eingabe);
}//Jahres-Zahl
if(j==4||j==5||j==6||j==7)
{
eingabe = getch();
keineSTaste = sondertaste(eingabe);
}/*
//testProgramm
int dezimal, dezimal2;
dezimal = eingabe;
dezimal2 = sz;
cout << dezimal;
cout << dezimal2;
*///Ausgabe
if(ausgabe==true)
{
putchar(eingabe);i2++;
if(eingabe!='\0' && keineSTaste!=0)
{
if(i2==3)
{
merker[stelle+1] = eingabe;
stelle++;
}else if(i2==5)
{
merker[stelle+1] = eingabe;
stelle++;
}else
merker[stelle] = eingabe;stelle++;
}
}
}
//HIER ensteht das Problem
::conStr = merker;
//strcpy(::conStr, ptrMerker);
}
}
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3.Datei(eigene.h)
//---------------------------------------------------------------------------
#ifndef Unit1H
extern string conStr;
extern double conNum;
extern bool keineSTaste;
extern bool ausgabe;
#define Unit1Hint eingabeTaste(short int vorZeichen, short int sonderzeichen);
int sondertaste(int eingabe);
void colour(int colorText, int colorBackground);
char con_in(short int spalte,short int zeile,short int lFeld,short int typ);
//---------------------------------------------------------------------------
#endif-------------------------------------------------------------------Danke dir!
-
Schema:
main.cpp:#include "eigene.h" string myStr; int main() { foo(); cout << myStr; myStr = "h"; cout << myStr; }
eigene.cpp:
#include "eigene.h" void foo() { cout << "hallo"; myStr = "f"; }
eigene.h:
#ifndef EIGENE_H #define EIGENE_H extern string myStr; void foo(); #endif
-
Gschlossen bis zur Erklärung der Sinnhaftigkeit der Beiträge per Mail an einen der Moderatoren.