ich habe leider ein Problem und zwar haben wir ein CGI-Projekt von unserem Lehrer auf's Auge gedrückt bekommen. Ich habe den CGI-Parser soweit aber sobald er mehr als 5 Keywords übergeben kriegt zählt er nurnoch die Länge hoch und ich verstehe absolut nicht warum.
PS: Ja ich weiß man könnte den Parser auch mit Maps besser realisieren jedoch dürfen wir nur Stoff den wir im Unterricht durchgenommen haben verwenden... :/
Hier mal die Funktion (HTML[] ist der POST der eingelesen wurde ( KEYWORD=DATA&KEYWORD=...&...), HTMLData die Struktur indem ich das getrennte speichere und verwalte ):
Code:
//HTMLString Splitten
void MakeUseable( char HTML[] , THTMLData *HTMLData)
{
/****************************************
* Parser *
****************************************/
//Variablen
int HTML_size = StrLaenge(HTML);
int Keywords = 0;
int Charcount = 0;
int MAX_Kw_Lengh = 0;
int MAX_kw_Data_Lengh = 0;
//Temp Vars
char TempChar = ' ';
int TempKLengh = 0;
int TempKDLengh = 0;
bool Fall = false;
//Zeichen zählen
for(int i=0; HTML[i] != '\0'; i++)
Charcount++;
//Leerzeichen setzen
for(int i=0; HTML[i] == '\0'; i++)
if( HTML[i] =='+' )
HTML[i] = ' ';
// Fall 0=Keyword 1=KeywordData
for(int i=0; HTML[i] != '\0'; i++)
{
if( Fall == false )
{
//MAX_Keyword-Länge zählen
TempKLengh++;
if( HTML[i] == '=' )
{
Keywords++;
if( TempKLengh > MAX_Kw_Lengh )
{
MAX_Kw_Lengh = TempKLengh-1;
TempKLengh = 0;
Fall = true;
}
}
}
if( Fall == true )
{
//MAX_Keyword-Data-Länge zählen
TempKDLengh++;
//cout << TempKDLengh<<endl;
if( HTML[i] == '&' || HTML[i+1] == '\0' )
{
if( TempKDLengh > MAX_kw_Data_Lengh )
{
MAX_kw_Data_Lengh = TempKDLengh-1;
TempKDLengh = 0;
Fall = false;
}
}
}
}
cout << "Keywordlänge = " << MAX_Kw_Lengh << endl;
cout << "KeywordData_l= " << MAX_kw_Data_Lengh << endl;
cout << "Anz_Keywords = " << Keywords << endl;
system("pause");
HTMLData->num_of_Keywords = Keywords;
HTMLData->num_of_Keywordlengh = MAX_Kw_Lengh;
HTMLData->num_of_Datalengh = MAX_kw_Data_Lengh;
if(Keywords > 0 && MAX_kw_Data_Lengh > 1)
{
//Dynamischen Speicher anlegen...
HTMLData->Keywords = new char*[Keywords];
//Keywords
for(int b=0; b<Keywords; b++)
{
//cout << b;
HTMLData->Keywords[b] = new char[MAX_Kw_Lengh+1];
//cout << "laenge=" << a << endl;
}
HTMLData->Data = new char*[Keywords+1];
//Data
for(int b=0; b<Keywords; b++)
{
//cout << b;
HTMLData->Data[b] = new char[MAX_kw_Data_Lengh+1];
//cout << "laenge=" << a << endl;
}
int pos = 0;
int lengh = 0;
for(int a=0; a < Keywords; a++)
{
for(int bla=pos; HTML[bla] != '='; bla++)
{
HTMLData->Keywords[a][lengh] = HTML[bla];
++lengh;
pos +=1;
//cout << "POS: " << pos << endl;
}
HTMLData->Keywords[a][lengh] = '\0';
cout << "FULL STRING:"<< HTMLData->Keywords[a] << endl;
lengh = 0;pos += 1;
for(int coo=pos; HTML[coo] != '&' && HTML[coo] != '\0'; coo++)
{
HTMLData->Data[a][lengh] = HTML[coo];
++lengh;
pos += 1;
}
HTMLData->Data[a][lengh] = '\0';
cout << "FULL STRING DATA:"<< HTMLData->Data[a] << endl;
lengh = 0;pos +=1;
}
}
//cout << "FINISH" << endl;
}
MfG Preakz
EDIT : /CLOSE FEHLER GEFUNDEN






