Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 28-01-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Otra cosa importante es que no estas inicializando los objetos que estas usando

sugarsoapPortType es una interface, es decir, para poder usarla, debes primero asignar una referencia a un objeto que imlpemente esa interface a la variable. De no hacerlo, la referencia contiene el valor nil. Cualquier metodo que quieras ejecutar sobre una interface que vale nil, produce un error en tiempo de ejecucion EAccessViolation

El wizard te genera automaticamente una funcion para crear esta interface, GetsugarsoapPortType

Para usar la interface deberias hacer algo como esto:

Código Delphi [-]
procedure blabla;
var
  ws: sugarsoapPortType;
begin
  ws := GetsugarsoapPortType;
  // ws ahora no vale nil y podes invocar sus metodos
end:

Esta misma "regla", se cumple para todos los tipos involucrados. Debes inicializarlos (crearlos, ya sea con un constructor, o con una funcion) y luego utilizarlos. Es cierto que existen los llamados "tipos primitivos" (Integer, string, record, etc) que si bien no es necesario resulta importante inicializarlos para darles un valor que tenga sentido:

Este codigo no da error, pero que valor tiene la variable I? No hay forma de saberlo ya que I va a tener el valor que estaba almacenado en la direccion de memoria que le fue asignado. Se dice en la jerga que el valor de I es "residuo"

Código Delphi [-]
procedure blabla;
var
  I: Integer;
begin
  ShowMessage(IntToStr(I));
end;

Hago enfasis en esto porque del mismo modo que invocas metodos sobre una interface sin antes inicializarla, y tambien le pasas parametros que no son inicializados

Por ejemplo, user_auth es una clase:

Código Delphi [-]
  user_auth = class(TRemotable)
  private
    Fuser_name: string;
    Fpassword: string;
  published
    property user_name: string  read Fuser_name write Fuser_name;
    property password:  string  read Fpassword write Fpassword;
  end;

Osea que debes inicializar una variable y luego tambien darle valores a sus propiedades internas (user_name y password, sino quedan como string vacios y quiza no tenga sentido, lo ideal seria darle valores concretos)
Responder Con Cita
 


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
Consumir Webservice darkerbyte Delphi para la web 5 17-11-2012 20:59:50
webservice WCF consultasmq Internet 0 19-03-2012 21:10:00
Consumir WebService. Ayuda con XML,WSDL,XSD,SOAP josemmerida Internet 2 23-12-2010 13:37:16
WebService y D4 Nose Internet 1 02-08-2005 22:18:23


La franja horaria es GMT +2. Ahora son las 23:19:10.


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