function argument passing a string or text

Having a problem passing a string, or text, to a function. Basically I am trying to write a reusable function to print different values when called.

void setup() {
    String startStringOne = "This is some text I want to pass to the function";
    String startStringTwo = "This is some different text I want to pass to the function";

}

void loop() {
 sendThisToTheDisplay (startStringOne, "LED_GREEN");
 delay(10000);
 sendThisToTheDisplay (startStringTwo, "LED_RED");

}

void sendThisToTheDisplay (sendThisString,showThisColor) {
  <some code here for LEDs to display the text string in the color I want>
  
}

sketch_mar10a.ino:4: error: variable or field 'sendThisToTheDisplay' declared void
sketch_mar10a.ino:4: error: 'sendThisString' was not declared in this scope
sketch_mar10a.ino:4: error: 'showThisColor' was not declared in this scope
sketch_mar10a.ino: In function 'void loop()':
sketch_mar10a.ino:8: error: 'startStringOne' was not declared in this scope
sketch_mar10a.ino:8: error: 'sendThisToTheDisplay' was not declared in this scope
sketch_mar10a.ino:10: error: 'startStringTwo' was not declared in this scope
sketch_mar10a.ino: At global scope:
sketch_mar10a.ino:14: error: variable or field 'sendThisToTheDisplay' declared void
sketch_mar10a.ino:14: error: 'sendThisString' was not declared in this scope
sketch_mar10a.ino:14: error: 'showThisColor' was not declared in this scope

Having a problem passing a string, or text, to a function.

No, you are not. A string and a String are two completely separate things. Do NOT use one term when you mean the other.

startStringOne and sartStringTwo are local to setup. They cease to exist as soon as setup() ends.

You can't then use them in loop().

OK.. I got that working.. I can pass text..

However.. In my final code (see below), the library requires an argument to specify the color, this will also need to be specified within the function call within the loop function.

But it throws an error when I run it. Seems the setTextColor argument requires a uint16_t. The allowed values look like this:
setTextColor(LED_GREEN)
setTextColor(LED_RED)
setTextColor(LED_YELLOW)

If I were to remove the second argument in my function call and write the setTextColor properly, then all the code works fine. But I need to be able to specify which color I am using

Error

I2C_Multiple_LED_Displays.ino: In function 'void doTextScroll(String, const char*)':
I2C_Multiple_LED_Displays.ino:33: error: invalid conversion from 'const char*' to 'uint16_t'
I2C_Multiple_LED_Displays.ino:33: error:   initializing argument 1 of 'void Adafruit_GFX::setTextColor(uint16_t)'

Code:

    #include <Wire.h>
    #include "Adafruit_LEDBackpack.h"
    #include "Adafruit_GFX.h"

    Adafruit_BicolorMatrix matrix[3] = (Adafruit_BicolorMatrix(), Adafruit_BicolorMatrix(), Adafruit_BicolorMatrix());
    String myFirstString = "...aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn ooo ppp qqq rrr sss ttt uuu vvv www xxx yyy zzz...";
    String mySecondString = "...AAA BBB CCC DDD EEE FFF GGG HHH JJJ 111 222 333 444 555 666 777 888 999 000...";

    void setup() { 
      for(uint8_t i=0; i<3; i++) {
        matrix[i].begin(0x70 + i);
        matrix[i].setTextSize(1);
        matrix[i].setTextWrap(false); // Allow text to run off edges
        matrix[i].setRotation(3);
        matrix[i].setBrightness(7);
        matrix[i].setTextColor(LED_ON); // Single arg = foreground color, Two args = Foreground, Background color (LED_OFF,LED_ON) for reversed text
      }
    }

    void loop() {
      doTextScroll (myFirstString, "LED_RED");
      doTextScroll (mySecondString, "LED_GREEN");

    }
    
    void doTextScroll (String sendThisString, const char* sendThisColor) {
      if (digitalRead(1) == HIGH) {
        int16_t len = sendThisString.length() * 6;
        for (int16_t x=23; x>=-(len); x--) {
          for(uint8_t i=0; i<3; i++) {
            matrix[i].clear();
            matrix[i].setCursor(x-(i*8),0);
            matrix[i].setTextColor(sendThisColor);
            matrix[i].print(sendThisString);
            matrix[i].writeDisplay();
          }
          delay(35);
        }
      } 
      
    }

I'd say there's a good chance that LED_GREEN is actually a #define or a const value that would be found in the library.

Try putting a line in setup() to serial.print(LED_GREEN) and you'll probably get a value that would make an RGB LED green. It's unlikely that a function that displays an RGB LED would take a string for a value.

Found it..

void doTextScroll (String sendThisString, const uint16_t sendThisColor) {

I am not sure what it means.. But it works.. I am now able to use that one function for multiple calls based upon what I want to send..

Thanks for all the help.. Now to move on to the next phase of this program..

    void loop() {
      doTextScroll (myFirstString, LED_RED);
      doTextScroll (mySecondString, LED_GREEN);
      doTextScroll (myThirdString, LED_YELLOW);

    }
    
    void doTextScroll (String sendThisString, const uint16_t sendThisColor) {
      if (digitalRead(1) == HIGH) {
        int16_t len = sendThisString.length() * 6;
        for (int16_t x=23; x>=-(len); x--) {
          for(uint8_t i=0; i<3; i++) {
            matrix[i].clear();
            matrix[i].setCursor(x-(i*8),0);
            matrix[i].setTextColor(sendThisColor);
            matrix[i].print(sendThisString);
            matrix[i].writeDisplay();
          }
          delay(35);
        }
      }