Funkcja: Parametry jak w ConCat

0

Jest taka fajna funkcja ConCat...
Jak zrobić takie parametry?

Jak ktoś nie wie, o co mi chodzi:
mogę np. podać:

MojaFunkcja('a', 'b', 'c');

lub

MojaFunkcja('a', 'b', 'c', 'd', 'e', 'f');

Chcę, żeby funkcja miała tyle parametrów ile podam, żeby się nie domagała więcej i nie wywalała błędu, że za mało...

Dzięki z góry [browar]
Cimak [cya]

0

wedlug mnie mozna to jedynie zrobic daja paremetry domyslne
np. MojaFunkcja (a : integer =0;b : integer =0;c : integer =0)
i pozniej w fukncji if a<>0 then ....

0

Jest więcej sposobów - przekazywać parametry w tablicy dynamicznej albo robić kolejne proicedury o tej samej nazwie i innych parametrach z (dyrektywą? no nie wiem jak to się nazywa :P :/) overload, np. tak:

procedure aaa(x: Integer); overload;
procedure aaa(x,y: Integer); overload;

I wyjdzie efekt jak np. Canvas.Rectangle.

0

Przerzuć się na cpp...

void runerror(char* msg,...){
  char* t=strdup("Application error\nProgram will be terminated\nSave all unsaved data than press 'ok'\n");
  if(t){
    char* s=msg;
    va_list ap;
    va_start(ap,msg);
    do{
      t=(char*)realloc(t,strlen(t)+1+strlen(s));
      if(!t)goto error;
      strcat(strcat(t,"\n"),s);
    }while(s=va_arg(ap,char*));
    va_end(ap);
    MessageBox(0,t,"ERROR :",MB_ICONERROR|MB_OK);
    free(t);
  }
  error:
  exit(EXIT_FAILURE);
}

// wiem, że nie jest to takie rozwiązanie, jakiego potrzebujesz, ale nie moglem się oprzeć.
// sorki, za agitację :]

0

akurat Concat, tak jak Read i Write są wbudowane w kompilator i czegoś takiego sami nie zrobimy. A szkoda.

0

W sumie można...

procedure(var parametry:array of typ);
var iloscparametrow:integer;
begin
iloscparametrow:=length(parametry).
//...
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1