DLL einbinden...
-
OK, das ist 'n Deal...
@F98: Weil ich mich zwischen ' und " entscheiden muss: Eins kann ich nicht mit 'reinnehmen... Und ich entscheide mich für ". Es sei denn, du weißt 'n Weg, mit dem man beides mit reinkriegt...
[ Dieser Beitrag wurde am 03.03.2003 um 18:04 Uhr von aaaabyx editiert. ]
-
F98 hat schon recht. Anstatt 1000 Zeilen für deinen char* AnalytInit (oder wie auch immer er heißt) zu schreiben, kannst du genauso
char AnalytInit[] = " 0123456789ABCDEFG....";
schreiben. Das ist das Gleiche!!!
[ Dieser Beitrag wurde am 03.03.2003 um 18:10 Uhr von WebFritzi editiert. ]
-
Dann kann ich aber das " nicht verwenden, weil das Programm das als Ende des Strings ansieht...
Ach UND: Ich hatte es oben schon mal erwähnt: Wenn ich die Funktionen in dem Projekt, das ausgrführt wird, selbst deklariere, Funktionieren sie OHNE Fehlermeldung!!!
-
Ok, hier kommt der durchstrukturierte Code:
//--------------------------------------------------------------------------- #include <vcl\vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- // Wichtiger Hinweis zur DLL-Speicherverwaltung: // // Um die Bibliothek BCBMM.LIB zu verwenden, muß diese zum DLL-Projekt und // allen EXE-Projekten geladen werden. Dies gilt, falls Ihre DLL eine // Funktion exportiert, die Stringobjekte (oder verschachtelte Strings in // Structs/Classes) als Parameter übergibt. Dies modifiziert die DLL und deren // Programme so, daß die Datei BCBMM.DLL als dessen Speichermanager verwendet // wird. In diesen Fällen muß die Datei BCBMM.DLL mit Ihrer DLL weitergegeben // werden. // // Um die Verwendung der BCBMM.DLL zu vermeiden, sollten // String-Parameter unter Verwendung von "char *" oder ShortString-Parameter // übergeben werden. //--------------------------------------------------------------------------- extern "C" __declspec(dllexport) String GetCodedText(String, String); extern "C" __declspec(dllexport) String GetNormalText(String, String); char Annalyt[103]; //--------------------------------------------------------------------------- USERES("Codeworks.res"); //--------------------------------------------------------------------------- int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) { return 1; } //--------------------------------------------------------------------------- //Eingabe des Zeichenfeldes void AnnalytInit(void) { Annalyt[1]='0'; Annalyt[2]='1'; Annalyt[3]='2'; Annalyt[4]='3'; Annalyt[5]='4'; Annalyt[6]='5'; Annalyt[7]='6'; Annalyt[8]='7'; Annalyt[9]='8'; Annalyt[10]='9'; Annalyt[11]='A'; Annalyt[12]='B'; Annalyt[13]='C'; Annalyt[14]='D'; Annalyt[15]='E'; Annalyt[16]='F'; Annalyt[17]='G'; Annalyt[18]='H'; Annalyt[19]='I'; Annalyt[20]='J'; Annalyt[21]='K'; Annalyt[22]='L'; Annalyt[23]='M'; Annalyt[24]='N'; Annalyt[25]='O'; Annalyt[26]='P'; Annalyt[27]='Q'; Annalyt[28]='R'; Annalyt[29]='S'; Annalyt[30]='T'; Annalyt[31]='U'; Annalyt[32]='V'; Annalyt[33]='W'; Annalyt[34]='X'; Annalyt[35]='Y'; Annalyt[36]='Z'; Annalyt[37]='Ä'; Annalyt[38]='Ö'; Annalyt[39]='Ü'; Annalyt[40]='a'; Annalyt[41]='b'; Annalyt[42]='c'; Annalyt[43]='d'; Annalyt[44]='e'; Annalyt[45]='f'; Annalyt[46]='g'; Annalyt[47]='h'; Annalyt[48]='i'; Annalyt[49]='j'; Annalyt[50]='k'; Annalyt[51]='l'; Annalyt[52]='m'; Annalyt[53]='n'; Annalyt[54]='o'; Annalyt[55]='p'; Annalyt[56]='q'; Annalyt[57]='r'; Annalyt[58]='s'; Annalyt[59]='t'; Annalyt[60]='u'; Annalyt[61]='v'; Annalyt[62]='w'; Annalyt[63]='x'; Annalyt[64]='y'; Annalyt[65]='z'; Annalyt[66]='ä'; Annalyt[67]='ö'; Annalyt[68]='ü'; Annalyt[69]=','; Annalyt[70]='.'; Annalyt[71]=';'; Annalyt[72]=':'; Annalyt[73]='°'; Annalyt[74]='!'; Annalyt[75]='@'; Annalyt[76]='²'; Annalyt[77]='§'; Annalyt[78]='³'; Annalyt[79]='$'; Annalyt[80]='%'; Annalyt[81]='&'; Annalyt[82]='/'; Annalyt[83]='{'; Annalyt[84]='('; Annalyt[85]='['; Annalyt[86]=')'; Annalyt[87]=']'; Annalyt[88]='='; Annalyt[89]='}'; Annalyt[90]='ß'; Annalyt[91]='?'; Annalyt[92]='µ'; Annalyt[93]='+'; Annalyt[94]='*'; Annalyt[95]='~'; Annalyt[96]='#'; Annalyt[97]='"'; Annalyt[98]='-'; Annalyt[99]='_'; Annalyt[100]='<'; Annalyt[101]='>'; Annalyt[102]='|'; Annalyt[103]=' '; } //Codierungsfunktion String GetCodedText(String NormalTextIm, String PasswordIm) { AnnalytInit(); //Initialisieren der Texte und des Passworts AnsiString NormalText=NormalTextIm; AnsiString Password=PasswordIm; AnsiString CodedText=""; //Initialisieren der Variablen zum bestimmen des Zeichens im Text/Passwort int a=1; int b=1; //Codierung while (NormalText.Length()>CodedText.Length()) { //Initialisierung der benötigten Variablen int y=1; bool Done=false; //Erkennung des Buchstabens im Text while((y<=103)&&(Done==false)) { if (NormalText[a]==Annalyt[y]) Done=true; else y++; } //Initialisierung der benötigten Variablen int z=1; Done=false; //Erkennung des Buchstabens im Passwort while((z<=103)&&(Done==false)) { if (Password[b]==Annalyt[z]) Done=true; else z++; } //Berechnung des Ergebnisses int e=y+z; if (e>103) e=e-103; CodedText=CodedText+Annalyt[e]; //Bestimmen der neuen Variablenwerte für die Bestimmung eines Buchstabens im Text/Passwort a++; if (b==Password.Length()) b=1; else b++; } //Endergebnis return CodedText; } //Funktion zum Decodieren String GetNormalText(String NCodedTextIm, String NPasswordIm) { AnnalytInit(); //Initialisieren der Texte und des Passworts AnsiString NCodedText=NCodedTextIm; AnsiString NPassword=NPasswordIm; AnsiString BackNormalText=""; //Initialisieren der Variablen zum bestimmen des Zeichens im Text/Passwort int g=1; int f=1; //Decodierung while (NCodedText.Length()>BackNormalText.Length()) { //Initialisierung der benötigten Variablen int z1=1; bool Done2=false; //Erkennung des Buchstabens im Text while ((z1<103)&&(Done2==false)) { if (NCodedText[g]==Annalyt[z1]) Done2=true; else z1++; } //Initialisierung der benötigten Variablen int z2=1; Done2=false; //Erkennung des Buchstabens im Passwort while ((z2<=103)&&(Done2==false)) { if (NPassword[f]==Annalyt[z2]) Done2=true; else z2++; } //Berechnung des Ergebnisses int e2=z1+103-z2; if (e2>103) e2=e2-103; BackNormalText=BackNormalText+Annalyt[e2]; //Bestimmen der neuen Variablenwerte für die Bestimmung eines Buchstabens im Text/Passwort g++; if (f==NPassword.Length()) f=1; else f++; } //Endergebnis return BackNormalText; }
Ich hoffe mal das wird gleich richtig dargestellt...
Ja, SUPI...Was soll denn das jetzt...
[ Dieser Beitrag wurde am 03.03.2003 um 19:04 Uhr von aaaabyx editiert. ]
-
Öhm, jo, das sieht doch schon viel besser aus. Aber sag mal, mit welcher MessageBox gibt es jetzt ein Problem?
-
Dieses Programm verstehe wer will... Früher hab' ich immer 'ne MessageBox gekriegt(beim Debuggen), wo drinstand:UNGÜLTIGE ZEIGEROPERATION... Wie gesagt... Früher... jetzt krieg ich immer, wenn ich die Funktion aufrufe, eine Zugriffsverletzung. Beim Debuggen und, wenn ich die EXE ausführe...
[ Dieser Beitrag wurde am 03.03.2003 um 21:55 Uhr von aaaabyx editiert. ]
-
Die EXE? Die kann aber garnicht da sein, wenn ein Fehler im Programm ist.
Und in WELCHER Funktion bekommst du eine Schmutzverletzung?
-
Also, nehmen wir mal an ich starte das Projekt, das die Funktionen aus der Dll aufruft, indem ich doppelt auf die vom Compilier erzeugte .exe-Datei klicke... Dann rufe ich eine der beiden Funktionen mit einer Button-Click-Methode auf.Jetzt krieg ich eine Zugriffsverletzung, egal welche Funktion ich verwendet habe... Diese kommt aber im weiteren verlauf des Programmes nie wieder vor. Die Funktionen arbeiten korrekt.
EDIT: Sorry, ich meinte Zugriffsverletzung...
[ Dieser Beitrag wurde am 03.03.2003 um 22:07 Uhr von aaaabyx editiert. ]
-
Weiß das niemand?
@WebFritzi: Bitte hilf mir weiter...
-
Hey, hat denn keiner 'ne Ahnung???
-
Ich war jetzt 2 Wochen in den Ferien, aber eine Lösung hat immer noch keiner...
-
Bitte helft mir doch mal... Ich bin ratlos.
-
Ich als Compiler:
Fehler:
Was ist Annalyt in der Funktion AnnalytInit???
Sorry aber das kann ich nicht richen, dass das ein char-Arrey sein soll
-
Wenn du ein Compiler bist, der sich den Deklerationsteil nciht anguckt, dann kannst du mit anderen wohl nicht mithalten...