2011-04-21 14 views
5

Hoy hojeé algunos artículos al azar sobre geek en Wikipedia para obtener mi dosis diaria de conocimiento inútil. Me encontré con quines, que son programas que imprimen su propio código fuente. Descubrí que era una gran manera de hacer que me doliera el cerebro, así que comencé a trabajar en un quine en VBA. Tenía dos buenas razones:Las quines desaparecidas: Visual Basic (para Aplicaciones)

  1. no pude encontrar un quine escrito en VBA
  2. VBA le anima a escribir código incómoda que hace que su cerebro herido

Aquí es mi obra maestra:

Sub q() 
c = "Sub q();c = #;Debug.Print Replace(Replace(c, Chr(59), vbNewLine), Chr(35), Chr(34) & c & Chr(34));End Sub" 
Debug.Print Replace(Replace(c, Chr(59), vbNewLine), Chr(35), Chr(34) & c & Chr(34)) 
End Sub 

Mi desafío: ¿Puede hacerlo aún más corto (y preferiblemente más incómodo)?

Respuesta

1

No sé si alguien lee esto anomore hilo, pero aquí hay una aún más corta, en base a la quine de das_weezul. Es independiente de "Option Explicit" (a diferencia de das_weezul) y es independiente de la aplicación de Office en la que está trabajando (es decir, Excel, Access, Word, etc.), a diferencia de la de Alex K. Utilizarlo en la ventana inmediata (Ctrl + G):

c="c=#:?replace(c,chr(35),chr(34) &c &chr(34))":?replace(c,chr(35),chr(34) &c &chr(34)) 
+0

Usted puede incluso hacer que uno de cuatro caracteres más corta : 'c =" c = #: a = chr (34): reemplazar (c, chr (35), a & c & a) ": a = chr (34): reemplazar (c, chr (35), a & c & a) ' – Dorian

+0

Todavía estoy leyendo esto: D Es genial ver este hilo volver a la vida. ¡Esa solución se ve realmente resbaladiza! –

+0

Lo siento @Alex K, Dorian se hizo con el trono: D –

5

¿Qué tal

Sub q() '//in mdl1 
Debug.Print Workbooks(1).VBProject.VBComponents(5).CodeModule.Lines(1, 3) 
End Sub 
+0

sabía que alguien vendría con eso;) 2 para la longitud, -1 para una buena legibilidad;) –

Cuestiones relacionadas