Thanks you for your replies. > So I think there is no solution for you. Can you tell us what you want to > archive?
Yes, I've made a little XOR encrypter/decrypter for strings, seqs and arrays. It works perfectly but I was wondering if it was possible to do it using only one function instead of four. # ---------------------------------------------------------------------------------------------------------------------- proc encrypterRaw*[T](data: var openarray[T], key: string) = let dataCount = data.len() * sizeof(T) let keyLen = key.len() let dataPtr = getPtr(data) if keyLen == 0: return var xorState: uint32 = 1 for i in 0 ..< dataCount: xorState = xorState xor (xorState shl 13) xorState = xorState xor (xorState shr 17) xorState = xorState xor (xorState shl 5) writePtr(dataPtr, readPtr(dataPtr, uint8, i) xor uint8(key[i mod keyLen]) xor uint8(xorState), uint8, i) # ---------------------------------------------------------------------------------------------------------------------- proc encrypter*(str, key: string): string = result = str encrypterRaw(result, key) # ---------------------------------------------------------------------------------------------------------------------- proc encrypter*[T](data: seq[T], key: string): seq[T] = result = data encrypterRaw(result, key) # ---------------------------------------------------------------------------------------------------------------------- proc encrypter*[I, T](data: array[I, T], key: string): array[I, T] = result = data encrypterRaw(result, key) Run Anyway, it does not matter, I'll leave it as it is. Thank you ; )