Autor
|
Tema: [RETO] + Funcion Extraer Numeros de Cadenas! (Leído 22,319 veces)
|
seba123neo
|
Las pruebas en tiempo de ejecucion no? creo que solo así se podra comparar una que solo se obtiene el resultado en tiempo de ejecucion que otra desde el IDE..  Corroborar las probe compilado a las 2 funciones.
|
|
|
En línea
|
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.
Neil deGrasse Tyson
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Las pruebas en tiempo de ejecucion no? creo que solo así se podra comparar una que solo se obtiene el resultado en tiempo de ejecucion que otra desde el IDE..  Corroborar Por si las moscas comprubelas COMPILADAS no desde el IDE, aun asi tanto la de Karcr... y la de un servidor NO FUNCIONAN desde el IDE... Dulces Lunas!¡.
|
|
« Última modificación: 6 Enero 2012, 06:32 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
... Esta es la ultima que pongo lo PROMETO!¡. Esta modificada segun el Prototipo... Public Function getNumbers3(ByRef sIn As String) As String Dim thisWord(0) As Integer ' // Un caracter = 2 bytes = integer Dim thisRet(0) As Long ' // jejeje... Dim dwOffSetGet As Long ' // Offset Get caracter... Dim dwOffSetSet As Long ' // Offset Set caracter... Dim wWord As Integer ' // Letra en asc... Dim dwLenI As Long ' // Longitud en bytes de sIn... Dim lpAux As Long ' // Auxiliar... Dim dwRetLen As Long ' // jejeje... dwOffSetGet = ((StrPtr(sIn) - VarPtr(thisWord(&H0&))) \ &H2&) dwOffSetSet = dwOffSetGet dwLenI = LenB(sIn) If (dwLenI) Then Do If (dwLenI And &H80000000) Then Exit Do wWord = thisWord(dwOffSetGet) If (wWord >= &H30) Then If (wWord <= &H39) Then dwRetLen = (dwRetLen + &H2&) thisWord(dwOffSetSet) = wWord dwOffSetSet = (dwOffSetSet + &H1&) End If End If dwOffSetGet = (dwOffSetGet + &H1&) dwLenI = (dwLenI - &H2&) Loop While (wWord > &H0&) thisWord(dwOffSetSet) = &H0& lpAux = ((VarPtr(sIn) - VarPtr(thisRet(&H0&))) \ &H4&) thisRet(((StrPtr(sIn) - VarPtr(thisRet(&H0&))) \ &H4&) - &H1&) = dwRetLen thisRet(((VarPtr(getNumbers3) - VarPtr(thisRet(&H0&))) \ &H4&)) = thisRet(lpAux) thisRet(lpAux) = &H0& End If End Function
Temibles Lunas!¡.
|
|
« Última modificación: 6 Enero 2012, 17:47 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Voy a arriesgar: BlackZeroX tu código no funcionará siempre  Y si funciona es de suerte  Te arriesgas a que por alguna razón VB6 te meta el array de words en una dirección impar y a partir de ahí todos tus accesos ya no son correctos 
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Voy a arriesgar: BlackZeroX tu código no funcionará siempre  Y si funciona es de suerte  Te arriesgas a que por alguna razón VB6 te meta el array de words en una dirección impar y a partir de ahí todos tus accesos ya no son correctos  Te equivocas y muy feo esta vez... ya que cuando se hace un acceso a memoria de un array se hace siguiento esta forma si no mal me quivoco AddressBase + Index * sizeof(Tipo) Donde AddressBase es el Indice 0 del array... Revisala y dale un debug... que la verdad a mi tambien de dio unos dolores de cabeza debido a que el tipo del array lo cambien de un array tipo byte a uno integer y a uno long es decir de 1 byte a 2 bytes y a 4 bytes... Option Explicit Private Sub Command1_Click() Dim sStr As String Dim i As Long Dim lpLast As Long Show For i = 0 To 500 sStr = " 1234567890" ' // Nos tiene que devolver esactamente LO MISMO... lpLast = StrPtr(sStr) Text1.Text = i & vbTab & lpLast & vbTab & getNumbers3(sStr) & vbCrLf & Text1.Text DoEvents Caption = i Next i sStr = "hola54 mundo5412" MsgBox getNumbers3(sStr) MsgBox sStr End ' // Fozamos... End Sub
Output: 500 2353284 1234567890 499 2353404 1234567890 498 2353364 1234567890 497 2353324 1234567890 496 2353284 1234567890 495 2353404 1234567890 494 2353364 1234567890 493 2353324 1234567890 492 2353284 1234567890 491 2353404 1234567890 490 2353364 1234567890 489 2353324 1234567890 488 2353284 1234567890 487 2353404 1234567890 486 2353364 1234567890 485 2353324 1234567890 484 2353284 1234567890 483 2353404 1234567890 482 2353364 1234567890 481 2353324 1234567890 480 2353284 1234567890 479 2353404 1234567890 478 2353364 1234567890 477 2353324 1234567890 476 2353284 1234567890 475 2353404 1234567890 474 2353364 1234567890 473 2353324 1234567890 472 2353284 1234567890 471 2353404 1234567890 470 2353364 1234567890 469 2353324 1234567890 468 2353284 1234567890 467 2353404 1234567890 466 2353364 1234567890 465 2353324 1234567890 464 2353284 1234567890 463 2353404 1234567890 462 2353364 1234567890 461 2353324 1234567890 460 2353284 1234567890 459 2353404 1234567890 458 2353364 1234567890 457 2353324 1234567890 456 2353284 1234567890 455 2353404 1234567890 454 2353364 1234567890 453 2353324 1234567890 452 2353284 1234567890 451 2353404 1234567890 450 2353364 1234567890 449 2353324 1234567890 448 2353284 1234567890 447 2353404 1234567890 446 2353364 1234567890 445 2353324 1234567890 444 2353284 1234567890 443 2353404 1234567890 442 2353364 1234567890 441 2353324 1234567890 440 2353284 1234567890 439 2353404 1234567890 438 2353364 1234567890 437 2353324 1234567890 436 2353284 1234567890 435 2353404 1234567890 434 2353364 1234567890 433 2353324 1234567890 432 2353284 1234567890 431 2353404 1234567890 430 2353364 1234567890 429 2353324 1234567890 428 2353284 1234567890 427 2353404 1234567890 426 2353364 1234567890 425 2353324 1234567890 424 2353284 1234567890 423 2353404 1234567890 422 2353364 1234567890 421 2353324 1234567890 420 2353284 1234567890 419 2353404 1234567890 418 2353364 1234567890 417 2353324 1234567890 416 2353284 1234567890 415 2353404 1234567890 414 2353364 1234567890 413 2353324 1234567890 412 2353284 1234567890 411 2353404 1234567890 410 2353364 1234567890 409 2353324 1234567890 408 2353284 1234567890 407 2353404 1234567890 406 2353364 1234567890 405 2353324 1234567890 404 2353284 1234567890 403 2353404 1234567890 402 2353364 1234567890 401 2353324 1234567890 400 2353284 1234567890 399 2353404 1234567890 398 2353364 1234567890 397 2353324 1234567890 396 2353284 1234567890 395 2353404 1234567890 394 2353364 1234567890 393 2353324 1234567890 392 2353284 1234567890 391 2353404 1234567890 390 2353364 1234567890 389 2353324 1234567890 388 2353284 1234567890 387 2353404 1234567890 386 2353364 1234567890 385 2353324 1234567890 384 2353284 1234567890 383 2353404 1234567890 382 2353364 1234567890 381 2353324 1234567890 380 2353284 1234567890 379 2353404 1234567890 378 2353364 1234567890 377 2353324 1234567890 376 2353284 1234567890 375 2353404 1234567890 374 2353364 1234567890 373 2353324 1234567890 372 2353284 1234567890 371 2353404 1234567890 370 2353364 1234567890 369 2353324 1234567890 368 2353284 1234567890 367 2353404 1234567890 366 2353364 1234567890 365 2353324 1234567890 364 2353284 1234567890 363 2353404 1234567890 362 2353364 1234567890 361 2353324 1234567890 360 2353284 1234567890 359 2353404 1234567890 358 2353364 1234567890 357 2353324 1234567890 356 2353284 1234567890 355 2353404 1234567890 354 2353364 1234567890 353 2353324 1234567890 352 2353284 1234567890 351 2353404 1234567890 350 2353364 1234567890 349 2353324 1234567890 348 2353284 1234567890 347 2353404 1234567890 346 2353364 1234567890 345 2353324 1234567890 344 2353284 1234567890 343 2353404 1234567890 342 2353364 1234567890 341 2353324 1234567890 340 2353284 1234567890 339 2353404 1234567890 338 2353364 1234567890 337 2353324 1234567890 336 2353284 1234567890 335 2353404 1234567890 334 2353364 1234567890 333 2353324 1234567890 332 2353284 1234567890 331 2353404 1234567890 330 2353364 1234567890 329 2353324 1234567890 328 2353284 1234567890 327 2353404 1234567890 326 2353364 1234567890 325 2353324 1234567890 324 2353284 1234567890 323 2353404 1234567890 322 2353364 1234567890 321 2353324 1234567890 320 2353284 1234567890 319 2353404 1234567890 318 2353364 1234567890 317 2353324 1234567890 316 2353284 1234567890 315 2353404 1234567890 314 2353364 1234567890 313 2353324 1234567890 312 2353284 1234567890 311 2353404 1234567890 310 2353364 1234567890 309 2353324 1234567890 308 2353284 1234567890 307 2353404 1234567890 306 2353364 1234567890 305 2353324 1234567890 304 2353284 1234567890 303 2353404 1234567890 302 2353364 1234567890 301 2353324 1234567890 300 2353284 1234567890 299 2353404 1234567890 298 2353364 1234567890 297 2353324 1234567890 296 2353284 1234567890 295 2353404 1234567890 294 2353364 1234567890 293 2353324 1234567890 292 2353284 1234567890 291 2353404 1234567890 290 2353364 1234567890 289 2353324 1234567890 288 2353284 1234567890 287 2353404 1234567890 286 2353364 1234567890 285 2353324 1234567890 284 2353284 1234567890 283 2353404 1234567890 282 2353364 1234567890 281 2353324 1234567890 280 2353284 1234567890 279 2353404 1234567890 278 2353364 1234567890 277 2353324 1234567890 276 2353284 1234567890 275 2353404 1234567890 274 2353364 1234567890 273 2353324 1234567890 272 2353284 1234567890 271 2353404 1234567890 270 2353364 1234567890 269 2353324 1234567890 268 2353284 1234567890 267 2353404 1234567890 266 2353364 1234567890 265 2353324 1234567890 264 2353284 1234567890 263 2353404 1234567890 262 2353364 1234567890 261 2353324 1234567890 260 2353284 1234567890 259 2353404 1234567890 258 2353364 1234567890 257 2353324 1234567890 256 2353284 1234567890 255 2353404 1234567890 254 2353364 1234567890 253 2353324 1234567890 252 2353284 1234567890 251 2353404 1234567890 250 2353364 1234567890 249 2353324 1234567890 248 2353284 1234567890 247 2353404 1234567890 246 2353364 1234567890 245 2353324 1234567890 244 2353284 1234567890 243 2353404 1234567890 242 2353364 1234567890 241 2353324 1234567890 240 2353284 1234567890 239 2353404 1234567890 238 2353364 1234567890 237 2353324 1234567890 236 2353284 1234567890 235 2353404 1234567890 234 2353364 1234567890 233 2353324 1234567890 232 2353284 1234567890 231 2353404 1234567890 230 2353364 1234567890 229 2353324 1234567890 228 2353284 1234567890 227 2353404 1234567890 226 2353364 1234567890 225 2353324 1234567890 224 2353284 1234567890 223 2353404 1234567890 222 2353364 1234567890 221 2353324 1234567890 220 2353284 1234567890 219 2353404 1234567890 218 2353364 1234567890 217 2353324 1234567890 216 2353284 1234567890 215 2353404 1234567890 214 2353364 1234567890 213 2353324 1234567890 212 2353284 1234567890 211 2353404 1234567890 210 2353364 1234567890 209 2353324 1234567890 208 2353284 1234567890 207 2353404 1234567890 206 2353364 1234567890 205 2353324 1234567890 204 2353284 1234567890 203 2353404 1234567890 202 2353364 1234567890 201 2353324 1234567890 200 2353284 1234567890 199 2353404 1234567890 198 2353364 1234567890 197 2353324 1234567890 196 2353284 1234567890 195 2353404 1234567890 194 2353364 1234567890 193 2353324 1234567890 192 2353284 1234567890 191 2353404 1234567890 190 2353364 1234567890 189 2353324 1234567890 188 2353284 1234567890 187 2353404 1234567890 186 2353364 1234567890 185 2353324 1234567890 184 2353284 1234567890 183 2353404 1234567890 182 2353364 1234567890 181 2353324 1234567890 180 2353284 1234567890 179 2353404 1234567890 178 2353364 1234567890 177 2353324 1234567890 176 2353284 1234567890 175 2353404 1234567890 174 2353364 1234567890 173 2353324 1234567890 172 2353284 1234567890 171 2353404 1234567890 170 2353364 1234567890 169 2353324 1234567890 168 2353284 1234567890 167 2353404 1234567890 166 2353364 1234567890 165 2353324 1234567890 164 2353284 1234567890 163 2353404 1234567890 162 2353364 1234567890 161 2353324 1234567890 160 2353284 1234567890 159 2353404 1234567890 158 2353364 1234567890 157 2353324 1234567890 156 2353284 1234567890 155 2353404 1234567890 154 2353364 1234567890 153 2353324 1234567890 152 2353284 1234567890 151 2353404 1234567890 150 2353364 1234567890 149 2353324 1234567890 148 2353284 1234567890 147 2353404 1234567890 146 2353364 1234567890 145 2353324 1234567890 144 2353284 1234567890 143 2353404 1234567890 142 2353364 1234567890 141 2353324 1234567890 140 2353284 1234567890 139 2353404 1234567890 138 2353364 1234567890 137 2353324 1234567890 136 2353284 1234567890 135 2353404 1234567890 134 2353364 1234567890 133 2353324 1234567890 132 2353284 1234567890 131 2353404 1234567890 130 2353364 1234567890 129 2353324 1234567890 128 2353284 1234567890 127 2353404 1234567890 126 2353364 1234567890 125 2353324 1234567890 124 2353284 1234567890 123 2353404 1234567890 122 2353364 1234567890 121 2353324 1234567890 120 2353284 1234567890 119 2353404 1234567890 118 2353364 1234567890 117 2353324 1234567890 116 2353284 1234567890 115 2353404 1234567890 114 2353364 1234567890 113 2353324 1234567890 112 2353284 1234567890 111 2353404 1234567890 110 2353364 1234567890 109 2353324 1234567890 108 2353284 1234567890 107 2353404 1234567890 106 2353364 1234567890 105 2353324 1234567890 104 2353284 1234567890 103 2353404 1234567890 102 2353364 1234567890 101 2353324 1234567890 100 2353284 1234567890 99 2353404 1234567890 98 2353364 1234567890 97 2353324 1234567890 96 2353284 1234567890 95 2353404 1234567890 94 2353364 1234567890 93 2353324 1234567890 92 2353284 1234567890 91 2353404 1234567890 90 2353364 1234567890 89 2353324 1234567890 88 2353284 1234567890 87 2353404 1234567890 86 2353364 1234567890 85 2353324 1234567890 84 2353284 1234567890 83 2353404 1234567890 82 2353364 1234567890 81 2353324 1234567890 80 2353284 1234567890 79 2353404 1234567890 78 2353364 1234567890 77 2353324 1234567890 76 2353284 1234567890 75 2353404 1234567890 74 2353364 1234567890 73 2353324 1234567890 72 2353284 1234567890 71 2353404 1234567890 70 2353364 1234567890 69 2353324 1234567890 68 2353284 1234567890 67 2353404 1234567890 66 2353364 1234567890 65 2353324 1234567890 64 2353284 1234567890 63 2353404 1234567890 62 2353364 1234567890 61 2353324 1234567890 60 2353284 1234567890 59 2353404 1234567890 58 2353364 1234567890 57 2353324 1234567890 56 2353284 1234567890 55 2353404 1234567890 54 2353364 1234567890 53 2353324 1234567890 52 2353284 1234567890 51 2353404 1234567890 50 2353364 1234567890 49 2353324 1234567890 48 2353284 1234567890 47 2353404 1234567890 46 2353364 1234567890 45 2353324 1234567890 44 2353284 1234567890 43 2353404 1234567890 42 2353364 1234567890 41 2353324 1234567890 40 2353284 1234567890 39 2353404 1234567890 38 2353364 1234567890 37 2353324 1234567890 36 2353284 1234567890 35 2353404 1234567890 34 2353364 1234567890 33 2353324 1234567890 32 2353284 1234567890 31 2353404 1234567890 30 2353364 1234567890 29 2353324 1234567890 28 2353284 1234567890 27 2353404 1234567890 26 2353364 1234567890 25 2353324 1234567890 24 2353284 1234567890 23 2353404 1234567890 22 2353364 1234567890 21 2353324 1234567890 20 2353284 1234567890 19 2353404 1234567890 18 2353364 1234567890 17 2353324 1234567890 16 2353284 1234567890 15 2353404 1234567890 14 2353364 1234567890 13 2353324 1234567890 12 2353284 1234567890 11 2353404 1234567890 10 2353364 1234567890 9 2353324 1234567890 8 2353284 1234567890 7 2353404 1234567890 6 2353364 1234567890 5 2353324 1234567890 4 2353284 1234567890 3 2353404 1234567890 2 2353364 1234567890 1 2353324 1234567890 0 2353284 1234567890
Dulces Lunas!¡.
|
|
« Última modificación: 6 Enero 2012, 17:50 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Ha habido una confusión xD Pensaba que accedías al Integer usando un Array de Bytes  Mi error 
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
@Karcrack si puedes cambias tu funcion segun el prototipo Function MYfunction ( STR as string ) as stringde todos modos aun se pueden hacer actualizaciones hasta el dia de mañana ^^ EDIT: Mi mov ya no sirvio T_T con el prototipo bueno para la proxima  Los resultados hasta ahora:
79137913:
1:0.435 2:0.432 3:0.436 4:0.430 5:0.436
BlackZeroX:
1:0.147 2:0.148 3:0.148 4:0.148 5:0.148
Elemental Code:
1:13.151 2:13.351 3:13.195 4:13.369 5:13.352
RHL:
1:0.629 2:0.632 3:0.629 4:0.629 5:0.629
Falta Karcrack que modifique el prototipo, tambien seba123neo  o alguien mas que se desee unir al reto 
|
|
« Última modificación: 7 Enero 2012, 01:54 am por RHL - 该0在 »
|
En línea
|
|
|
|
Elemental Code
Desconectado
Mensajes: 622
Im beyond the system
|
Rustico Fails :'(
|
|
|
En línea
|
I CODE FOR $$$ Programo por $$$ Hago tareas, trabajos para la facultad, lo que sea en VB6.0 Mis programas
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Private Static Function kGetNums(ByVal s As String) As String Dim bv(0) As Byte Dim pbv As Long Dim rps As Long Dim i As Long Dim b As Byte Dim w As Long kGetNums = s If pbv = 0 Then pbv = VarPtr(bv(0)) rps = StrPtr(kGetNums) - pbv For i = 0 To LenB(kGetNums) Step 10 b = bv(rps + i + 0) If b >= &H30 Then If b <= &H39 Then bv(rps + w) = b w = w + 2 End If End If b = bv(rps + i + 2) If b >= &H30 Then If b <= &H39 Then bv(rps + w) = b w = w + 2 End If End If b = bv(rps + i + 4) If b >= &H30 Then If b <= &H39 Then bv(rps + w) = b w = w + 2 End If End If b = bv(rps + i + 6) If b >= &H30 Then If b <= &H39 Then bv(rps + w) = b w = w + 2 End If End If b = bv(rps + i + 8) If b >= &H30 Then If b <= &H39 Then bv(rps + w) = b w = w + 2 End If End If Next i bv(rps + w) = 0 End Function
Deberías probar la velocidad de los códigos en unas 10000 ejecuciones... ya que ahí es donde se ve mejor la diferencia de velocidades 
|
|
|
En línea
|
|
|
|
seba123neo
|
Falta Karcrack que modifique el prototipo, tambien seba123neo  o alguien mas que se desee unir al reto  ni hace falta la mia con RegEx es super lenta, te podes ir a comer y volver y todavia no termino, la puse simplemente por ponerla, no me acorde que era por velocidad. yo probe las de Karcrack y BlackZeroX, ahora les paso los test, con 10 mil vueltas, con un millon y 10 millones (personalmente me gustan las funciones que siguen funcionado veloces sin importar la cantidad de interaciones que haga, algunas solo rinden en pocas iteraciones y despues en muchas se ponen lentas.) la ultima de Karcrack, me crashea, ya le deshabilite lo de las matrices, pero igual. saludos.
|
|
|
En línea
|
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.
Neil deGrasse Tyson
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
App para buscar info y cadenas de numeros en MYSQL
Programación Visual Basic
|
A2Corp
|
2
|
3,242
|
14 Mayo 2008, 18:47 pm
por odeONeSs
|
|
|
[RETO] Funcion iFactorize() - Factorizacion de numeros enteros
« 1 2 »
Programación Visual Basic
|
Karcrack
|
15
|
8,934
|
19 Julio 2010, 17:19 pm
por FFernandez
|
|
|
[RETO] + Funcion Extraer Numeros de Cadenas! [Cpp/C]
« 1 2 3 4 »
Programación C/C++
|
x64core
|
39
|
29,150
|
8 Enero 2012, 00:58 am
por Eternal Idol
|
|
|
¿Como extraer cadenas especificas de un perfil wireless xml?
« 1 2 »
Programación C/C++
|
Romualdo23
|
16
|
6,470
|
25 Abril 2015, 22:20 pm
por ivancea96
|
|
|
[[RETO]] Funcion para ordenar, extraer e insertar en una pila
« 1 2 »
Programación C/C++
|
BlackDhampir
|
10
|
4,988
|
28 Octubre 2021, 16:22 pm
por Eternal Idol
|
|