Naja, der zweite Fehler liegt hier:
for i:=1 to length(ergeb) do begin
Sollte heißen:
for i:=0 to length(ergeb) - 1 do begin
Dynamische Arrays beginnen bei 0, nicht bei 1
Abgesehen davon sehe ich wenig Sinn darin, aus Explode eine Prozedur zu machen
Dann müsstest du s jedenfalls als var-Parameter übergeben, sonst wird das nix! - Käse, s soll ja garnicht verändert werden
Mann - benutz das doch einfach als Funktion...