-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 argsused

    int 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 Unit1H

    int 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.


Anmelden zum Antworten