Das kann so nicht funktionieren.
Ein string[4] in Delphi 5 stellt eine Speicherstruktur von 5 Byte dar - 1 für die Länge und vier Byte für die Daten. Aus dem Copy entsteht in s ein String der Länge 4 mit dem Inhalt "00 00 12 34". Der Speicherbereich sieht also so aus: 04 00 00 12 34
Du castest einen Pointer auf s in einen PInteger. Damit werden die ersten 4 Bytes des Bereichs als Integer (übrigens Little Endian) interpretiert. 04 00 00 12
entspricht somit $12000004 = 301989892.
Erschwerend kommt hinzu, dass die
Ziffern "1234" nicht etwa einem Speicherinhalt von 1234 entsprechen.