nooooooo
copiando ho visto l'errore:

i:=1 va dentro il ciclo esterno:

codice:
...
procedure trovaStr;
 begin
  dimCosa:=length(cosa);
  dimDove:=length(dove);
   for j:= 0 to (dimDove-dimCosa) do
    begin
      i:=1;
     while (i < dimCosa) and (cosa[i] = dove[i+j]) do
      i:=i+1;
     if i >= dimCosa then
      writeln('Corrispondenza trovata dalla posizione ', j+1);
    end;
 end;
...
scusate, ciao