Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Problemas con uso de fixed

Todos los errores son por el uso de fixed que no se bien lo que hace y la explicacion que veo no me entero de mucho. Estos son los errores:
Código:
Error        1        No se puede declarar una variable local denominada 'ptr' en este ámbito, porque daría un significado diferente a 'ptr', que ya se utiliza en un ámbito 'secundario' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        225 
Error        2        No se puede declarar una variable local denominada 'ptr2' en este ámbito, porque daría un significado diferente a 'ptr2', que ya se utiliza en un ámbito 'secundario' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        227 
Error        3        No se puede declarar una variable local denominada 'ptr' en este ámbito, porque daría un significado diferente a 'ptr', que ya se utiliza en un ámbito 'primario o actual' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        245 
Error        4        No se puede declarar una variable local denominada 'ptr2' en este ámbito, porque daría un significado diferente a 'ptr2', que ya se utiliza en un ámbito 'primario o actual' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        247 
Error        5        No se puede utilizar la instrucción fixed para adquirir la dirección de una expresión de tipo fixed        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        266 
Error        6        No se puede declarar una variable local denominada 'ptr2' en este ámbito, porque daría un significado diferente a 'ptr2', que ya se utiliza en un ámbito 'secundario' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        283 
Error        7        No se puede declarar una variable local denominada 'ptr' en este ámbito, porque daría un significado diferente a 'ptr', que ya se utiliza en un ámbito 'secundario' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        285 
Error        8        No se puede declarar una variable local denominada 'ptr' en este ámbito, porque daría un significado diferente a 'ptr', que ya se utiliza en un ámbito 'primario o actual' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        303 
Error        9        No se puede utilizar la instrucción fixed para adquirir la dirección de una expresión de tipo fixed        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        303 
Error        10        No se puede declarar una variable local denominada 'ptr2' en este ámbito, porque daría un significado diferente a 'ptr2', que ya se utiliza en un ámbito 'primario o actual' con otra denotación        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        305 
Error        11        No se puede utilizar la instrucción fixed para adquirir la dirección de una expresión de tipo fixed        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs        305 
Error        12        Se esperaba un identificador        C:\Documents and Settings\BlueDeep\Mis documentos\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs      93
y aqui el codigo como lo tengo ahora mismo: https://pastebin.com/EM1AknZe
Os estaria muy agradecido si me pudierais echar un cable con esto.
Responder Con Cita
  #2  
Antiguo 01-01-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Esta función ¿sería válida así?
Código PHP:
public unsafe byte[] DecryptAll(byte[] eData)
{
    
byte[] array = new byte[(int)eData.Length];
    
intptrInt1;
    
intptrInt2;
    
    if (
eData != null && (int)eData.Length !=0)
    {
        
fixed (byteptrByte1 = &eData[0])
        {
            
ptrInt1=(int*)ptrByte1;
        }
    }
    else
    {
        
fixed (byteptrByte1 = (byte[]) null)
        {
            
ptrInt1=(int*)null;
        }
    }
    
byte[] array2;
 
    if ((
array2 = array) != null &&(int)array2.Length != 0)
    {
        
fixed (byteptrByte2 = &array2[0])
        {
             
ptrInt2=(int*)ptrByte2;
        }
    }
    else
    {
        
fixed (byteptrByte2 = (byte[])null)
        {
            
ptrInt2=(int*)null;
        }
    }
    for (
int i 0< (int)eData.Length >> 3;+= 1)
    {
        
int num1 ReverseDWORD(*ptrInt1);
        
ptrInt1++;
        
int num2 ReverseDWORD(*ptrInt1);
        
ptrInt1++;
        
this.Desencriptar(ref num1ref num2);
        
num1 = (*ptrInt2 ReverseDWORD(num1));
        
ptrInt2++;
        
num2 = (*ptrInt2 ReverseDWORD(num2));
        
ptrInt2++;
    }
    return array;

La idea es ir cogiendo del array byte[] eData 2 enteros y encriptarlos, voy incrementando los punteros para ir accediendo al siguiente lugar de la memoria donde estará el siguiente entero.

Última edición por aguml fecha: 01-01-2018 a las 02:39:44.
Responder Con Cita
  #3  
Antiguo 03-01-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Solucionado
Responder Con Cita
  #4  
Antiguo 03-01-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Cómo?
Responder Con Cita
  #5  
Antiguo 04-01-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Pues como indiqué arriba. En C++ puedes hacer esto:
Código PHP:
byte array[125];
int *ptr=(int*)array;
*
ptr=0x12345678;
ptr++
*
ptr=0x88888888
En C# tienes que indicar que es código no seguro con unsafe cuando intentas hacer un cast de ese tipo y además hacerlo en una zona fixed y usar un puntero auxiliar para el casting:
Código PHP:
byte[125] array;
intptrInt;
    
fixed (byteptrByte = array)
{
    
ptrInt=(int*)ptrByte;
}
*
ptrInt=0x12345678;
ptrInt++;
*
ptrInt=0x88888888

Última edición por aguml fecha: 04-01-2018 a las 13:57:06.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Columna fixed LuisAlf:: Varios 4 07-09-2011 22:31:56


La franja horaria es GMT +2. Ahora son las 17:37:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi