How to Use strlen_P

Hi,

Can anyone offer advice on how to use strlen_P to obtain the length of a string in progmem?

In the example below, each of the four strings is length 1, 2, 3, and 4. But the results of strlen_P are over 500 for each one.

Thanks,
Jim

void sayDev(String line) {
softSerial.println(line);
softSerial.flush();
}
...
...
...
const char responseHeader[] PROGMEM = "1";
unsigned int headerLen = (unsigned int)strlen_P(responseHeader);
sayDev(F("1:"));
sayDev(String(headerLen));

const char responseHeader2[] PROGMEM = "22";
unsigned int headerLen2 = (unsigned int)strlen_P(responseHeader2);
sayDev(F("2:"));
sayDev(String(headerLen2));

const char responseHeader3[] PROGMEM = "333";
unsigned int headerLen3 = (unsigned int)strlen_P(responseHeader3);
sayDev(F("3:"));
sayDev(String(headerLen3));

const char responseHeader4[] PROGMEM = "4444";
unsigned int headerLen4 = (unsigned int)strlen_P(responseHeader4);
sayDev(F("4:"));
sayDev(String(headerLen4));

//////////////////////////////

It outputs:

1:
524
2:
527
3:
531
4:
537

const char responseHeader1[] PROGMEM = "1";
const char responseHeader2[] PROGMEM = "22";
const char responseHeader3[] PROGMEM = "333";
const char responseHeader4[] PROGMEM = "4444";

void setup() {
  Serial.begin(250000);
  Serial.print(F("1: "));
  Serial.println(strlen_P(responseHeader1));
  Serial.print(F("2: "));
  Serial.println(strlen_P(responseHeader2));
  Serial.print(F("3: "));
  Serial.println(strlen_P(responseHeader3));
  Serial.print(F("4: "));
  Serial.println(strlen_P(responseHeader4));
}
void loop() {}
1: 1
2: 2
3: 3
4: 4

you can't use PROGMEM for a local variable

You can use PROGMEM for a static local variable.