elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / PHP / Re: Problemas con un Array en: 3 Junio 2015, 20:22 pm
Gracias #!drvy, no veas que dolor de cabeza me estaba dando eso.

Mil gracias de verdad!!
2  Programación / PHP / [Resuelto] Problemas con un Array en: 2 Junio 2015, 19:09 pm
Hola buenas tardes a ver si me pueden ayudar ya que llevo medio día pegándome con este código pero lo logro sacar lo que necesito.

El código es este
Código
  1. $fname= $_GET["valor"];
  2.  
  3.  
  4. function findAllDirs($start) {
  5.    $dirStack=[$start];
  6.    while($dir=array_shift($dirStack)) {
  7.        $ar=glob($dir.'/*',GLOB_ONLYDIR|GLOB_NOSORT);
  8.        if(!$ar) continue;
  9.  
  10.        $dirStack=array_merge($dirStack,$ar);
  11.        foreach($ar as $DIR)
  12.            yield $DIR;
  13.    }
  14. }
  15.  
  16.  
  17. $result=[];
  18. foreach(findAllDirs('D:\xampp\htdocs\www\serverpruebas') as $dir) {
  19.    $match=glob($dir.'/'.$fname,GLOB_NOSORT);
  20.    if(!$match) continue;
  21.  
  22.    $result=array_merge($result,$match);
  23.  
  24. }
  25.  
  26. echo '<pre>';
  27. print_r($result);
  28. echo '</pre>';

Y el resultado es este:

Array
(
    [ 0 ] => D:\xampp\htdocs\www\serverprueba\COMMAND.arc
)

Y lo que estoy intentado hacer es esto:

    [ 0 ] => Array
        (
            [name] => COMMAND.arc
            [size] => 21160480
            [date] => 2015-06-02 16:48:05
        )


Espero que me puedan ayudar.

Un saludo y gracias de antemano
3  Programación / Bases de Datos / Re: Sacar 3 resultados de 2 tablas en: 19 Agosto 2014, 14:51 pm
Voy a intentar simplificarlo a ver si asi lo soluciono o no es tan complejo como intento hacerlo.

gracias de nuevo
4  Programación / Bases de Datos / Re: en: 19 Agosto 2014, 12:08 pm
Si lo que querés es un solo registro donde los primeros dos campos pertenezcan a ese query y el tercero a otro query, el tercer campo debería ser un subquery.

Mirare eso que me comentaste, se que más o menos es asi pero no logro sacarlo bien.

Salu2 y gracias
5  Programación / Bases de Datos / Sacar 3 resultados de 2 tablas en: 18 Agosto 2014, 17:26 pm
Hola buenas, lo que ando intentando es sacar 3 datos de 2 tablas diferentes. las consultas que tengo son estas:

Código
  1. SELECT fecha_descargas_dia, SUM(num_descargas_dia) num_descargas_dia FROM descargas_dia GROUP BY fecha_descargas_dia ASC

que devuelve estos datos

Código
  1. |2014-08-01|1
  2. |2014-08-02|7
  3. |2014-08-03|10
  4. |2014-08-04|11
  5. |2014-08-05|8

 y esta otra:
Código
  1. SELECT fecha_instalaciones_dia, SUM(num_instalaciones_dia) num_instalaciones_dia FROM instalaciones_dia GROUP BY fecha_instalaciones_dia ASC

que devuelve estos datos

Código
  1. |2014-08-01|2
  2. |2014-08-02|20
  3. |2014-08-03|15
  4. |2014-08-04|12
  5. |2014-08-05|5

Lo que llevo 3 horas intentando es que me de el mismo día con lo 2 datos de las tablas

Código
  1. |2014-08-02|7|20

Espero que me puedan ayudar.

Un saludo y mil gracias de antemano!
6  Programación / Programación General / [Inno Setup] Crear un boton en: 11 Abril 2014, 13:26 pm
HOla buenas, llevo toda la mañana mirando como crear un boton(justo al lado de atras) en el apartado de la selección de los complementos, y que cuando se pulse en el aparezca como un label que muestre lo que tengo generado en el codigo.
Código
  1. [Setup]
  2. Appname=My Program
  3. AppVername=My Program version 1.5
  4. DefaultDirname=%25257Bpf%25257D%25255CMy Program
  5. DefaultGroupname=My Program
  6. OutputDir=.
  7.  
  8. [Types]
  9. Name: "full"; Description: "Full installation"
  10. Name: "compact"; Description: "Compact installation"
  11. Name: "custom"; Description: "Custom installation"; Flags: iscustom
  12.  
  13. [Components]
  14. Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed
  15. Name: "help"; Description: "Help File"; Types: full
  16. Name: "readme"; Description: "Readme File"; Types: full
  17. Name: "readme\en"; Description: "English"; Flags: exclusive
  18. Name: "readme\de"; Description: "German"; Flags: exclusive
  19.  
  20. [Files]
  21. Source: descctrl.dll; Flags: dontcopy
  22.  
  23. [_Code]
  24. #ifdef UNICODE
  25.  #define AW "W"
  26. #else
  27.  #define AW "A"
  28. #endif
  29.  
  30. type
  31.  HMONITOR = THandle;
  32.  TMonitorInfo = record
  33.    cbSize: DWORD;
  34.    rcMonitor: TRect;
  35.    rcWork: TRect;
  36.    dwFlags: DWORD;
  37.  end;
  38.  
  39. const
  40.  MONITOR_DEFAULTTONULL = $0;
  41.  MONITOR_DEFAULTTOPRIMARY = $1;
  42.  MONITOR_DEFAULTTONEAREST = $2;
  43.  
  44. function GetMonitorInfo(hMonitor: HMONITOR; out lpmi: TMonitorInfo): BOOL;
  45.  external 'GetMonitorInfo{#AW}@user32.dll stdcall';
  46. function MonitorFromWindow(hwnd: HWND; dwFlags: DWORD): HMONITOR;
  47.  external 'MonitorFromWindow@user32.dll stdcall';
  48.  
  49. procedure CenterForm(Form: TForm; Horz, Vert: Boolean);
  50. var
  51.  X, Y: Integer;
  52.  Monitor: HMONITOR;
  53.  MonitorInfo: TMonitorInfo;
  54. begin
  55.  if not (Horz or Vert) then
  56.    Exit;
  57.  Monitor := MonitorFromWindow(Form.Handle, MONITOR_DEFAULTTONEAREST);
  58.  MonitorInfo.cbSize := SizeOf(MonitorInfo);
  59.  if GetMonitorInfo(Monitor, MonitorInfo) then
  60.  begin
  61.    if not Horz then
  62.      X := Form.Left
  63.    else
  64.      X := MonitorInfo.rcWork.Left + ((MonitorInfo.rcWork.Right -
  65.        MonitorInfo.rcWork.Left) - Form.Width) div 2;
  66.    if not Vert then
  67.      Y := Form.Top
  68.    else
  69.      Y := MonitorInfo.rcWork.Top + ((MonitorInfo.rcWork.Bottom -
  70.        MonitorInfo.rcWork.Top) - Form.Height) div 2;
  71.    Form.SetBounds(X, Y, Form.Width, Form.Height);
  72.  end;
  73. end;
  74.  
  75.  
  76. function enabledesc(ComponentsListHandle: HWND; DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
  77. function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';
  78.  
  79. var
  80.  Info: TNewStaticText;
  81.  InfoCaption: TNewStaticText;
  82.  InfoPanel: TPanel;
  83.  
  84. procedure DeinitializeSetup();
  85. begin
  86.  disabledesc();
  87. end;
  88.  
  89. type
  90.  TPositionStorage = array of Integer;
  91.  
  92. var
  93.  CompPageModified: Boolean;
  94.  CompPagePositions: TPositionStorage;
  95.  
  96. procedure SaveComponentsPage(out Storage: TPositionStorage);
  97. begin
  98.  SetArrayLength(Storage, 10);
  99.  
  100.  Storage[0] := WizardForm.Height;
  101.  Storage[1] := WizardForm.NextButton.Top;
  102.  Storage[2] := WizardForm.BackButton.Top;
  103.  Storage[3] := WizardForm.CancelButton.Top;
  104.  Storage[4] := WizardForm.ComponentsList.Height;
  105.  Storage[5] := WizardForm.OuterNotebook.Height;
  106.  Storage[6] := WizardForm.InnerNotebook.Height;
  107.  Storage[7] := WizardForm.Bevel.Top;
  108.  Storage[8] := WizardForm.BeveledLabel.Top;
  109.  Storage[9] := WizardForm.ComponentsDiskSpaceLabel.Top;
  110. end;
  111.  
  112. procedure LoadComponentsPage(const Storage: TPositionStorage;
  113.  HeightOffset: Integer);
  114. begin
  115.  if GetArrayLength(Storage) <> 10 then
  116.    RaiseException('Invalid storage array length.');
  117.  
  118.  WizardForm.Height := Storage[0] + HeightOffset;
  119.  WizardForm.NextButton.Top := Storage[1] + HeightOffset;
  120.  WizardForm.BackButton.Top := Storage[2] + HeightOffset;
  121.  WizardForm.CancelButton.Top := Storage[3] + HeightOffset;
  122.  WizardForm.ComponentsList.Height := Storage[4] + HeightOffset;
  123.  WizardForm.OuterNotebook.Height := Storage[5] + HeightOffset;
  124.  WizardForm.InnerNotebook.Height := Storage[6] + HeightOffset;
  125.  WizardForm.Bevel.Top := Storage[7] + HeightOffset;
  126.  WizardForm.BeveledLabel.Top := Storage[8] + HeightOffset;
  127.  WizardForm.ComponentsDiskSpaceLabel.Top := Storage[9] + HeightOffset;
  128. end;
  129.  
  130.  
  131.  
  132. // Meter esto al pulsar el botón detalles
  133.  procedure InitializeWizard();
  134.  begin
  135.    WizardForm.ComponentsList.Height := ScaleY(90);
  136.    WizardForm.ComponentsList.Width := ScaleX(415);
  137.  
  138.    InfoPanel := TPanel.Create(WizardForm);
  139.    InfoPanel.Parent := WizardForm.SelectComponentsPage;
  140.    InfoPanel.Top := Scaley(360);
  141.    InfoPanel.Left := ScaleX(0);
  142.    InfoPanel.Width := WizardForm.ComponentsList.Width;
  143.    InfoPanel.Height := ScaleY(50);
  144.    InfoPanel.BevelInner := bvRaised;
  145.    InfoPanel.BevelOuter := bvLowered;
  146.    Info := TNewStaticText.Create(WizardForm);
  147.    Info.Parent := InfoPanel;
  148.    Info.AutoSize := true;
  149.    Info.Left := ScaleX(6);
  150.    Info.Width := ScaleX(400);
  151.    Info.Top := ScaleY(5); // Linea de texto
  152.    Info.WordWrap := true;
  153.    enabledesc(WizardForm.ComponentsList.Handle,Info.Handle,
  154.          // Sustituir por ExpandConstant('{cm:Descripcion};') +
  155.         'Descrip. Program Files;'+
  156.         'Descrip. Help File;'+
  157.         'Descrip. Readme File;'+
  158.         'Descrip. English;'+
  159.         'Descrip. German;'
  160.         );
  161.  
  162.    begin
  163.      CompPageModified := False;
  164.    end;
  165.  end;
  166. // Meter esto al pulsar el botón detalles
  167.  
  168.  
  169. procedure CurPageChanged(CurPageID: Integer);
  170. begin
  171.  if CurpageID = wpSelectComponents then
  172.  begin
  173.    SaveComponentsPage(CompPagePositions);
  174.    LoadComponentsPage(CompPagePositions, 200);
  175.    CenterForm(WizardForm, False, True);
  176.    CompPageModified := True;
  177.  end
  178.  else
  179.  if CompPageModified then
  180.  begin
  181.    LoadComponentsPage(CompPagePositions, 0);
  182.    CenterForm(WizardForm, False, True);
  183.    CompPageModified := False;
  184.  end;
  185. end;
  186.  

Espero que me podais hechar una mano ya no se donde mirar ya que no encuentro mucha informacion.
Un saludo y mil gracias de antemano
7  Programación / Programación General / Re: InnoSetup: Problemas para comparar versiones en: 9 Marzo 2014, 21:16 pm
No manejo Pascal, espera la respuesta de alguien que sepa más que yo, pero de todas formas sería algo así:

Código
  1. const
  2.  // La constante de la versión actual.
  3.  AppVer = 1.0;
  4.  
  5. begin
  6. // Si el archivo se descarga corréctamente...
  7. if DownloadFile('http://dex.wotanksmods.com/latestver.txt', DxLastVersion)  then
  8.  
  9.    // comparo el string de la version descargada, con la version actual...  // return 1 if ver1 > ver2
  10.    if CompareVersion(DxLastVersion, AppVer) = 1 then
  11.      // Se ha encontrado una versión más actualizada, hacer lo que quieras...
  12.      // Code goes here.
  13.  
  14.    else
  15.      // Estás usando la versión más reciente.
  16.      // Do nothing.
  17.  
  18.    end;
  19.  
  20. end;

Gracias por la inspiración Elektro, te debo una buena cerveza !!

El codigo seria este:
Código
  1. function DownloadFile(const AURL: string; var AResponse: string): Boolean;
  2. var
  3.  WinHttpRequest: Variant;
  4. begin
  5.  Result := True;
  6.  try
  7.    WinHttpRequest := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  8.    WinHttpRequest.Open('GET', AURL, False);
  9.    WinHttpRequest.Send;
  10.    AResponse := WinHttpRequest.ResponseText;
  11.  except
  12.    Result := False;
  13.    AResponse := GetExceptionMessage;
  14.  end;
  15. end;
  16.  
  17. procedure DecodeVersion( verstr: String; var verint: array of Integer );
  18. var
  19.  i,p: Integer; s: string;
  20. begin
  21.  // initialize array
  22.  verint := [0,0,0,0];
  23.  i := 0;
  24.  while ( (Length(verstr) > 0) and (i < 4) ) do
  25.  begin
  26.   p := pos('.', verstr);
  27.   if p > 0 then
  28.   begin
  29.      if p = 1 then s:= '0' else s:= Copy( verstr, 1, p - 1 );
  30.    verint[i] := StrToInt(s);
  31.    i := i + 1;
  32.    verstr := Copy( verstr, p+1, Length(verstr));
  33.   end
  34.   else
  35.   begin
  36.    verint[i] := StrToInt( verstr );
  37.    verstr := '';
  38.   end;
  39.  end;
  40.  
  41. end;
  42.  
  43. function CompareVersion( ver1, ver2: String ) : Integer;
  44. var
  45.  verint1, verint2: array of Integer;
  46.  i: integer;
  47. begin
  48.  
  49.  SetArrayLength( verint1, 4 );
  50.  DecodeVersion( ver1, verint1 );
  51.  
  52.  SetArrayLength( verint2, 4 );
  53.  DecodeVersion( ver2, verint2 );
  54.  
  55.  Result := 0; i := 0;
  56.  while ( (Result = 0) and ( i < 4 ) ) do
  57.  begin
  58.   if verint1[i] > verint2[i] then
  59.    Result := 1
  60.   else
  61.      if verint1[i] < verint2[i] then
  62.      Result := -1
  63.    else
  64.      Result := 0;
  65.  
  66.   i := i + 1;
  67.  end;
  68.  
  69. end;
  70.  
  71.  
  72. function GetDeXVersion(): String;
  73. var
  74.  DeXVersion:  String;
  75. begin
  76.  DeXVersion := '';
  77.  DownloadFile('http://www.laurl.com/latestver.txt', DeXVersion );
  78.  Result := DeXVersion;
  79. end;
  80.  
  81.  
  82. function InitializeSetup(): Boolean;
  83. begin
  84.  if CompareVersion(GetDeXVersion(), '3.3.6') > 0 then
  85.  begin
  86.    Result := MsgBox('Se ha encontrado una version mas?',mbConfirmation, MB_YESNO) = idYes;
  87.    if Result = False then
  88.      MsgBox('Aqui mensaje para ir a la url o donde sea', mbInformation, MB_OK);
  89.  end
  90.  else
  91.    Result := true;
  92. end;

Un saludo y gracias de nuevo
8  Programación / Programación General / Re: InnoSetup: Problemas para comparar versiones en: 9 Marzo 2014, 21:04 pm
Aquí tienes un método de uso genérico para comparar una versión:


Gracias Elektro por la respuesta, mi pega esta cuando intento juntar esos 2 scripts que no se como hacerlo
9  Programación / Programación General / Re: Problemas para comparar versiones en: 9 Marzo 2014, 20:50 pm
Sugerencia:

En una sección que está dedicada a todos los lenguajes en general, al menos podrías especificar que el lenguaje del que trata el post es Pascal, en un comentario o en un Tag, ya que no todos saben distinguir la sintaxis, y abrir un post sin saber de que lenguaje se habla es hacer perder el tiempo a todos los demás.

Sobre lo de 'el Setup', te digo lo mismo, ¿que Setup, que archivo de instalación, eso que es?, ¿acaso te refieres a un InstallBuilder ...InnoSetup por ejemplo?, ¡pues dilo!.

Saludos!

Tienes dota la razón ya esta comentado para que no haya lios, Sorry   :-(
10  Programación / Programación General / InnoSetup: Problemas para comparar versiones (Solucionado) en: 9 Marzo 2014, 19:47 pm
Hola buenas tardes, llevo unos días comiéndome la cabeza...

 Lo que quiero hacer es que cuando ejecuto el setup, comprueba las nuevas actualizaciones.
1) si no hay una nueva actualización, no mostrar ningún mensaje.
2) y si hay una nueva actualización, aparece un mensaje preguntando si desea descargarlo y que lleve a una web o no.

El codigo de pascal es este:
Código
  1. function DownloadFile(const AURL: string; var AResponse: string): Boolean;
  2. var
  3.  WinHttpRequest: Variant;
  4. begin
  5.  Result := True;
  6.  try
  7.    WinHttpRequest := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  8.    WinHttpRequest.Open('GET', AURL, False);
  9.    WinHttpRequest.Send;
  10.    AResponse := WinHttpRequest.ResponseText;
  11.  except
  12.    Result := False;
  13.    AResponse := GetExceptionMessage;
  14.  end;
  15. end;
  16.  
  17. procedure InitializeWizard;
  18. var
  19.  DxLastVersion: string;
  20.  
  21. begin
  22.  if DownloadFile('http://dex.wotanksmods.com/latestver.txt', DxLastVersion)  then
  23.    MsgBox(DxLastVersion, mbInformation, MB_YESNO)
  24.  else
  25.    MsgBox(DxLastVersion, mbError, MB_OK)
  26. end;

Sobre la versión he leído por hay que al ser x.x.x parece mas complejo el código ya me da lo mismo que sea así que sea xxx

Espero que alguien pueda ayudarme se lo agradecería en el alma de verdad.

Un saludo y mil gracias de antemano.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines