Loose indentation - Am I an idiot or...? -
Hiddos - 29.09.2010
Ok, so I've got this code:
pawn Код:
#define CreateLetter(%0) \
for(new letter; letter < sizeof (%0); letter++) \
{ \
CreateObject(FONT, x + (%0)[letter][0] + (spacing * 4.8), y, z + (%0)[letter][1], 0, 0, 0); \
} \
spacing++ //There is NO ';' supposed to be here
Now if I want to use this code in my scripts, it gives me the following error:
Код:
C:\Users\Hiddos\Hiddos\scripts\filterscripts\haystacks.pwn(490) : warning 217: loose indentation
I'm kinda sick of finding out WHAT exactly causes the compiler to get this error, I've already tried quite everything I could come up with. That includes in placing the code in "how the compiler thinks it is".
For those interested:
pawn Код:
public CreateHayText(sentence[32], Float:x, Float:y, Float:z)
{
new spacing = 0;
for(new lpos; lpos < sizeof sentence; lpos++)
{
switch(lpos)
{
case 'a', 'A':
{
CreateLetter(A); //Loose indentation
}
case 'b', 'B':
{
//CreateLetter(B);
for(new letter; letter < sizeof A; letter++)
{
CreateObject(FONT, x + B[letter][0] + (spacing * 4.8), y, z + B[letter][1], 0, 0, 0);
}
spacing++;
//Would be EXACTLY the same code as generated, but NO loose indentation.
}
//All cases with 'case 'c', 'C': {}', doesn't relates to the problem at all.
default: spacing += 2;
}
}
return 1;
}
Any help is welcome ^^.
PS: I'm also getting some sort of problem with 'sizeof' when not giving the string/array a fixed length like:
pawn Код:
stock bla(text[])
{
new var = sizeof text; //Errors
}
stock bla(text[128])
{
new var = sizeof text; //Does not errors;
}
Any tips on that would be great as well ^^
Re: Loose indentation - Am I an idiot or...? -
Finn - 29.09.2010
Maybe the compiler doesn't like that kind of 'long' defines...
As it's just a define (doesn't need to look nice), it could work like this:
pawn Код:
#define CreateLetter(%0) \
for(new letter; letter < sizeof (%0); letter++) CreateObject(FONT, x + (%0)[letter][0] + (spacing++ * 4.8), y, z + (%0)[letter][1], 0, 0, 0)
Also, have you tried:
pawn Код:
stock bla(text[], var = sizeof text)
{
// Should work
}
Re: Loose indentation - Am I an idiot or...? -
samgreen - 29.09.2010
Quote:
Originally Posted by Finn
Maybe the compiler doesn't like that kind of 'long' defines...
As it's just a define (doesn't need to look nice), it could work like this:
pawn Код:
#define CreateLetter(%0) \ for(new letter;letter<sizeof(%0);letter++)CreateObject(FONT,x+(%0)[letter][0]+(spacing++* 4.8),y,z+(%0)[letter][1],0,0,0)
]
|
Try this, the shorter the better with #define macros as the line limit is 512 characters.
Re: Loose indentation - Am I an idiot or...? -
Hiddos - 29.09.2010
Well thanks for that, the loose indent doesn't warns me anymore lols.
The only lasting problem is the part with the 'sizeof'. Ah well, I'll have it with a fixed length then. Thanks ^^
Re: Loose indentation - Am I an idiot or...? -
VIRUXE - 29.09.2010
try this:
pawn Код:
stock bla(text[])
{
new var = strlen(text);
}
If you didn't specify the size then it could be any size, I guess.
Re: Loose indentation - Am I an idiot or...? -
Hiddos - 29.09.2010
Quote:
Originally Posted by ViRuXe
try this:
pawn Код:
stock bla(text[]) { new var = strlen(text); }
If you didn't specify the size then it could be any size, I guess.
|
Why didn't I think of that.. lol. Thanks, that makes the puzzle complete, now back to solving problems myself