Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#1471
Programación C/C++ / Re: funcion eliminar
11 Marzo 2011, 10:12 AM
.
Usa memcpy() y solo dezplaza el bloque desde el (elemento a eliminar+1) hasta la (longitud - la pocision ya mensionada), de la siguiente manera:

Si usas un vector ( Arreglo que apuntan a mas elementos de distintas longitudes ) puedes hacer lo siguiente:

llamese T el elemento a eliminar.
llamese L la longitud del vector.
Libera lo que apunta la posicion T con free() o delete segun sea el caso.
Mueve el bloque del arreglo desde (T+1) con longitud de (L-(T+1)) a la posicion T.
Despues usa realloc() en el caso de C++ usa NEW y despues memcpy().

Notas: Si (T+1) es mayor a L es un error de segmentacion si es igual a L es el ultimo elemento y si es (L-(T+1)) = 0 entonces el vecto no tendra ningun elemento, faltan obviar mas cosas pero ya te lo dejo a tu disposicion.

Este simple algoritmo es rapido y es el que uso en vb6 solo que es mas simple ( Usando Punteros en vb6 obvio ).

Temibles Lunas!¡.
#1472
no te respondo en delphi por que no se ni J de el, lo que si te repondo es que usando.

Driver<BDD> + ODBC(Creo y supongo que es optativo) + ADO + String Conection puedes manejar la Base de Datos en cualquier lenguaje usando Standart en este caso MySQL..

Un ejemplo usando el SQL Server es creando una ODBC y por medio de esta conectarte a la BDD deseada, regularmente usando una ODBC puedes fijar tu codigo y por medio de la ODBC configurar toda conexión pertinente inclusive cambiar la BDD o alternarla entre varias y asi apuntar a otras BDD y Tablas y la hubicacion donde se encuentren las mismas.

Aun que en ocasiones con el simple hecho de usar ADO es suficiente por lo menos de manera local; mejor usar una conexion via ODBC ya que te sera mas maleable en mi opinion para este tipo de casos ya que sera una conexion remota, y como a mi me da peresa estar compilando a cada rato....

Esta es mi opinion y consejo, hay quienes usen archivos INI pero es mas pesado prefiero hacerlo mas comodo para mi y para el cliente/usuario ademas Windows ya trae un administrador del ODBC en el panel de control bastante bueno a mi parecer.

Temibles Lunas!¡.
#1473
.
Dejo otra version en el hilo principal, esta mas depurada y mas funcional que la primera.

Temibles Lunas!¡.
#1474

@Elemental Code

lo que pasa que tu codigo me dejo mucho que desear, dejo uno pero aun le falta unos toques extras, pero bueno.

Temibles Lunas!¡.
#1475
Cita de: thedoctor77 en 23 Febrero 2011, 15:16 PM
delito es la distribución, vender implica distribuir. Por lo tanto es delito. Ya lo dije antes.

Crear no es delito, pero si distribuirlo. Además va por lo penal y lo civil.

un saludo!!

Vender tu Software NUNCA JAMAS sera un delito, o acaso el Soft TeamViewer es delito?... solo sus modificaciones pero el mismo en si NO, ya que tiene Todo y mas de un simple administrador remoto.

Si programo un Administrador remoto y espesifico en la EULA de contrato Digital para lo que esta hecha y en su manual explicitamente que el servidor es invisible y que con el simple hecho de usarlo responde a nesesidades personales sin perjudicar a 3eros  cuayas funciones son de manera puntuales ninguna ley debera intervenir ni podra decir que es malware puesto que contiene instrucciones y funcionalidades espesificas para nesesidaes puntuales del usuario. por otro lado si el mismo es usado como malware en mi punto de vista legal tienes fundamentos con el contrato digital ( que deberas dar con alguna licencia de distribucion legal en tu pais ) de que dicha utilizacion de software esta orientada a otros usos mas no para el uso inprudente del mismo.

Programar un software sin un contrado legal y/o licencia "X" puede acarrear problemas si se usan con fines perjudiciales a 3ros.

P.D.: Estos temas me parece que aun no estan implicitos ni definidos en México, pero es bueno estar informado de manera general e independientemente del pais de residencia ya que la propiedad intelectual debe avalarse con algo textual registrado de manera explicita.

Dulces Lunas!¡.
#1477
.
Lastima no uso FaceBook, pero por lo visto no estas usando las APIS, no va a durar.

Dulces Lunas!¡.
#1478
.
mmm en lugar de solo criticar la funcion pondre una de mi tutela que uso para esto, es decir centrar las cosas por medio de su hWnd, Sirve con:

* Objetos del form ( Botones, frames, etc... ).
* Ventanas ( de la aplicacion o externas ).
* Pantalla  ( Centra el objeto con restecto a la pantalla ).
* Funciona con TODO lo que tenga un hWnd valido.

Codigo Actualizado:

Código (vb) [Seleccionar]


'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Código siempre y cuando         //
' // no se eliminen los créditos originales de este código      //
' // No importando que sea modificado/editado o engrandecido    //
' // o achicado, si es en base a este código                    //
' ////////////////////////////////////////////////////////////////
' //
' ////////////////////////////////////////////////////////////////

Option Explicit

Private Type POINTAPI
    x       As Long
    y       As Long
End Type
Private Type RECT
    Left    As Long
    Top     As Long
    Right   As Long
    Bottom  As Long
End Type

Enum WS_InCenterOpt
    InScreen = 0
    InObject = 1
    InParent = 2
    InWinExtern = 3
End Enum

Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Public Function WinCenterIn(ByVal hwnd As Long, Optional ByVal InhWnd As Long = 0, Optional ByVal Opt As WS_InCenterOpt = InParent)
Dim st_retm         As RECT
Dim st_retd         As RECT
Dim st_pt           As POINTAPI

    If GetWindowRect(hwnd, st_retm) <> 0 Then
   
        Select Case Opt
       
            Case InObject, InParent, InWinExtern
                If Opt = InParent Then
                    InhWnd = GetParent(hwnd)
                    If InhWnd = 0 Then
                        WinCenterIn = WinCenterIn(hwnd, 0, InScreen)
                    End If
                End If
                If GetWindowRect(InhWnd, st_retd) = 0 Then
                    Exit Function
                End If

            Case InScreen
                st_retd.Bottom = GetSystemMetrics(&H1)
                st_retd.Right = GetSystemMetrics(&H0)
               
            Case Else
                Exit Function
               
        End Select
   
        st_pt.x = st_retd.Left + ((st_retd.Right - st_retd.Left) - (st_retm.Right - st_retm.Left)) \ 2
        st_pt.y = st_retd.Top + ((st_retd.Bottom - st_retd.Top) - (st_retm.Bottom - st_retm.Top)) \ 2
       
        If Opt <> InWinExtern Then
            Call ScreenToClient(InhWnd, st_pt)
        End If
       
        WinCenterIn = MoveWindow(hwnd, st_pt.x, st_pt.y, (st_retm.Right - st_retm.Left), (st_retm.Bottom - st_retm.Top), 1) <> 0

    End If
   
End Function



Ejemplo:

Código (vb) [Seleccionar]


Option Explicit

Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Command2_Click()
    WinCenterIn Me.hwnd
    WinCenterIn FindWindowA(vbNullString, "Administrador de tareas de Windows"), Me.hwnd, InWinExtern
    'WinCenterIn Me.hwnd, FindWindowA(vbNullString, "Administrador de tareas de Windows"), InWinExtern
End Sub



Version Anterior:



'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Código siempre y cuando         //
' // no se eliminen los créditos originales de este código      //
' // No importando que sea modificado/editado o engrandecido    //
' // o achicado, si es en base a este código                    //
' ////////////////////////////////////////////////////////////////
' //
' ////////////////////////////////////////////////////////////////

Option Explicit

Private Type POINTAPI
    x       As Long
    y       As Long
End Type
Private Type RECT
    Left    As Long
    Top     As Long
    Right   As Long
    Bottom  As Long
End Type

Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Public Function WinCenterIn(ByVal hwnd As Long, Optional ByVal InhWnd As Long = 0, Optional ByVal WinExterna As Boolean)
Dim st_retm         As RECT
Dim st_retd         As RECT
Dim st_pt           As POINTAPI


    If GetWindowRect(hwnd, st_retm) = 0 Then
        Exit Function
    End If
   
    If InhWnd = 0 Then
        st_retd.Bottom = GetSystemMetrics(&H1)
        st_retd.Right = GetSystemMetrics(&H0)
    Else
        If GetWindowRect(InhWnd, st_retd) = 0 Then
            Exit Function
        End If
    End If
   
    st_pt.x = st_retd.Left + (Abs((st_retd.Right - st_retd.Left) - (st_retm.Right - st_retm.Left))) \ 2
    st_pt.y = st_retd.Top + (Abs((st_retd.Bottom - st_retd.Top) - (st_retm.Bottom - st_retm.Top))) \ 2
   
    If Not WinExterna And InhWnd = 0 Then
        Call ScreenToClient(InhWnd, st_pt)
    Else
        Call ScreenToClient(InhWnd, st_pt)
        st_pt.x = st_pta.x + st_pt.x
        st_pt.y = st_pta.y + st_pt.y
    End If
    WinCenterIn = MoveWindow(hwnd, st_pt.x, st_pt.y, (st_retm.Right - st_retm.Left), (st_retm.Bottom - st_retm.Top), 1) <> 0
   
End Function



La implementacion es bastante sencilla.

Código (Vb) [Seleccionar]


WinCenterIn Command1.hwnd, Me.hwnd
WinCenterIn Command1.hwnd, 0
WinCenterIn me.hwnd, 0



Temibles Lunas!¡.
#1479
.
Mejor busca algo sobre ADO + SQL + VB6 hay mas informacion, esa revista se la mataron solo para unos simples msgbox() y algunas cosas feas para ganar dinero.

Dulces Lunas!¡.
#1480
.
fflush() --> Forza la "muestra" de los datos en el buffer, y a su vez vacia a la misma, alternativa -> "\n".

Dulces Lunas!¡.