Ich finde, du machst hier den zweiten Schritt vor dem ersten. Anstatt mich herumzuplagen, wie man RTTi von Free Pascal so verbiegen kann, dass man den Prozedurnamen herauskriegt, würde ich zuerst die Perl-Routine versuchen zu verstehen. Dann ist es sicher kein Problem mehr, die Buttons per Code in Lazarus zu platzieren und in einem Array zu speichern, und du hast alle Möglichkeiten, sie im Sender abzufragen.
Was Bauer321 oben meint, ist den Code für alle Buttons in einer Methode zu halten und mit Hilfe des Sender-Parameters abzufragen, welcher Button geklickt wurde. Etwa so (setzt voraus, dass die Buttons in einem Array "Buttons" stehen):
Code: Alles auswählen
procedure TForm1.AllgemeinesButtonClick(Sender: TObject);
var
i: Integer;
begin
for i:=0 to Length(Buttons)-1 do
if Buttons[i] = Sender then
ShowMessage(Format('Button %d clicked', [i]));
end;
end;