Build error, ik kom er niet aan uit..

Status
Niet open voor verdere reacties.

cobra880

Gebruiker
Lid geworden
5 aug 2006
Berichten
173
Hoi allemaal,


Ik ben bezig met een bot voor C&C Renegade geschreven in C++ op basis van het bestaande SSGM plugin. Mijn bot zorgt voor connectie met IRC, moderator opties, commands ingame, anti-cheat en nog veel meer.
Kom helaas nu een fout tegen waar ik niet snap waar het fout zit...
Had 'm eruit gehaald maar resulteerde in nog veel meer errors.

Het betreft nu een warning die uiteindelijk resulteert in een error waardoor ik m'n project niet kan builden.

LOGFILE:
1>Compiling...
1>FunctionClass.cpp
1>.\FunctionClass.cpp(1860) : error C2220: warning treated as error - no 'object' file generated
1>.\FunctionClass.cpp(1860) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data

Code:

Code:
char* Functions::ScrambleText(char *txt)
{
	//DLOG;
	int len = strlen(txt);
	char *scrambled = new char[len+1];
	char tmp;
	for (int i = 0; i < len; i++)
	{
		if (txt[i] == 32)
		{
			tmp = 32;
		}
		else if (txt[i] >= 32 && txt[i] <= 122)
		{
			tmp = txt[i]+(rand() % 15 + 1);
		}
		else
		{
			tmp = 46;
		}
		if (tmp > 122)
		{
			tmp -= 90;
		}
		scrambled[i] = tmp;
	}
	scrambled[len] = 0;
	strcpy(txt, scrambled);
	delete []scrambled;
	return txt;
}



Alvast heel erg bedankt dat iemand me eventueel verder kan helpen :thumb:



Kevin.
 
Hm... Bij mij doet hij het gewoon (Bloodshed Dev-C++)
Het enige wat ik zie wat er misschien mis mee zou kunnen zijn is de regel bijna aan het eind:

Code:
scrambled[len] = 0;

Ik zou het even veranderen in iets als

Code:
scrambled[len] = '\0';

en weer proberen.

Hopelijk werkt het!

Groet, Erik.
 
Helaas heb het geprobeerd maar veroorzaakt meer errors.
Zou het kunnen dat deze versie niet lekker werkt met Visual Studio 2005?
Want hij is namelijk gemaakt in een nieuwere versie.

In het begin kon ik het project niet openen omdat de versie niet juist was.
Toen heb ik een parameter verandert van 8.0 naar 6.0 of 7.0.
Misschien hier mee te maken?

Toch bedankt voor je hulp en meedenken:thumb:


Kevin.
 
1>.\FunctionClass.cpp(1860) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data
In bestand FunctionClass.cpp op lijn 1860 (welke dat in jouw klein stukje code dat je hier postte is, weten wij natuurlijk niet) probeer je mogelijks een integerwaarde in een variabele van het type char op te slaan. Je wordt dus gewaarschuwd aangezien een integer op jouw systeem groter is dan een character (vermoedelijk 4bytes tegenover 1byte) en je dus mogelijks aan gegevensverlies/corruptie lijdt.
Aangezien je compile-opties zeggen elke warning als een error te behandelen, wordt je code niet omgezet in iets uitvoerbaars.

Als ik een wilde gok zou doen, loopt het fout op de volgende regel:
tmp = txt+(rand() % 15 + 1);

Aangezien het resultaat van rand() een integer is, is het resultaat van het gehele rechterlid dat ook. Een static_cast zou je warning kunnen oplossen:
tmp = txt + static_cast<char>(rand() % 15 + 1);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan