![]() |
funcion que me regresa un arreglo
hola amigo hace 3 años no programo en delphi algunas cosas las he olvidado quiero crear una function que me regrese un array
ejemplo
mi pregunta es que tengo que enviarle 25 parametros a esta funcion para evaluarlos dentro de esta debo nombrar los 25 parametro y sus tipos de campo diciendo que NewEventlistArray me devolvera mi arreglo ya evaluado?? asi??
gracias si alguien me explica :D:D:D |
Hola julyus.
Primero te comento que las funciones declaradas así: te van a dar error de sintáxis. Tendrías que declararlas así:
Ahora, si lo que enviás es un arreglo de strings y la función devuelve el mismo arreglo modificado, me parece, que te conviene usar TStrings. Por ejemplo esta función te devuelve los strings sin el primer caracter:
Un ejemplo de llamada:
Espero que sea eso lo que andas buscando... :) Saludos. |
confused ??
no se si te entendi bien
Código Delphi [-]type TEventslistArray = array[0..58] of string; function SearchEvents(sIMEI: string; iCompanyId : integer; sVehicleId : string; iCurrSpeed,iCurrRPM,iAccDeccValue :integer; bDIN1, bDIN2, bDIN3, bDIN4 : Boolean; fAIN1, fAIN2, fAIN3, fAIN4 : Extended; iGSMSignal, iCurrentProfile : integer; fAcelerometerData, fGPSSpeed, fPowerSuplyVoltage, fBatteryVoltage, fBatteryCurrent, fGPSPower, fPCBTemperature, fTempSensor1, fTempSensor2, fTempSensor3, fFuelCounter, sButtonInput, fCan0, fCan1, fCan2, fCan3, fCan4, fCan5, fCan6, fCan7, fCan8, fCan9 : Extended; bGeoZone1, bGeoZone2, bGeoZone3, bGeoZone4, bGeoZone5, bGeoZone6, bGeoZone7, bGeoZone8, bGeoZone9, bGeoZone10, bGeoZone11, bGeoZone12, bGeoZone13, bGeoZone14, bGeoZone15, bGeoZone16, bGeoZone17, bGeoZone18, bGeoZone19, bGeoZone20 : Boolean; fVirtualOdometer : string; sCurrOperatorCode : Extended; bMovement : Bool ) :TEventslistArray; nose si mi :TEventslistArray; devolvera mi arreglo ?? esto es un web service por eso no lo he probado en forms no se si funciones la otra duda es si tipo los campos se genere algun problema gracias...:confused::confused::confused::confused: |
confused ??
no se si te entendi bien
[-][/delphi] nose si mi :TEventslistArray; devolvera mi arreglo ?? esto es un web service por eso no lo he probado en forms no se si funciones la otra duda es si tipo los campos se genere algun problema gracias...:confused::confused::confused::confused: |
Hola julyus.
Si la función SearchEvents la declaraste para que devuelva un TEventslistArray y dentro de ella asignas a la variable Result un TEventsListArray, te va a devolver eso sin duda alguna. Si no comprendí bién tu duda, por favor hacemelo saber. Saludos. |
hola amigo por la ayuda
la duda que me queda es si miras los campos que envio tienen tipo, el
array es de tipo string esto me daria errores? ahora lo que quiero es lo siguiente NewArrayData es un array que va a recibir los resultados de SearchEvents el resultado del array lo voy a pasar a este para hacer un ulitimo proceso fVirtualOdometer, sCurrOperatorCode, bMovement); gracias por tu tiempo :confused::confused::eek::D |
No tenés nada que agradecer.
A ver si con esto solucionamos algo...
En este caso pasas y recibis un RecSearchEvents. (o el nombre que quieras darle) Tenés que cargar los valores en el record antes de llamar a la función por ej:
Nota: No es necesario, pero al ser tantos campos para una mayor claridad quizá te convenga declarar el registro así:
Es mas o ménos lo que buscabas ? Saludos. |
script completo
te lo voy a explicar mejor tengo una funcion lacual recibe estos parameros y devuelve un booleano
dentro de esta funcion envian un array "cAVLDataFM4" luego se debe descomponer en varables para un query update mi primer paso es pasar a variables luego enviarlas a mi funtion array evaluo y luego le paso el retorno de mi funtion array a un array final para hacer un insert te preguntaras para que mi funtion array me generara mas rows para mi array final luego con eso hare el insert es por cuestion de manejo que se hace eso mi duda ahora es como paso el resultado de mi funcion a un nuevo array ??:confused: aca es donde estoy usando lo que te he preguntado eficsa
|
Hola julyus.
Confieso que me había embarullado un poco con el tema, ahora que veo la función mucho más :D. Pero me doy cuenta que quizá la respuesta sea más sencilla de lo que pensé... Por que tu preguntas es esta no ? Cita:
Pero podrías intentar con un arreglo de tipo Variant, es decir reemplazar:
Por: El tipo Variant te admite cualquier tipo de variable. Espero que te sirva. Saludos :). |
hola eficsa gracias por tu colaboracion
todavia tengo una duda o un error cunado compilo me sale un error incompatible types extended and string ???:confused::confused:
|
Hola julyus.
Con los tipo Variant podes hacer lo siguiente:
¿ En que parte del código te salta el error ? Saludos. |
este es el codigo mas o menos
aqui es donde llamo el array para pasarlo a otro array creo que esta mal
la sintaxis de como hacerlo
declaracion de la funcion
funcion uso de la funcion aqui es donde me marca el error
la funcion no esta terminada lo que quiero de esta funcion es que me ingrese unos datos y si hay unos casos cumplidos me genere un array con el registro primero ingresado y luego los casos cunplidos me generelos unos nuevos rows repetidos solo con los casos cumplidos afectaran unas variables y generaran un nuevo row ejemplo a,b,c insert row en el array entran a b y c si c = 0 se evaluan si c= o tonces escribe a,b y c= '123' en el array fin si c= 1 si c= o tonces escribe a,b y c= '321' en el array a regresar alfinal deben quedarme 3 rows 1 original 2 cambiado 3 cambiado fin de la funcion
|
Hola julyus.
Claro, por que estás intentando asignar una funcion a un array of variant: Cita:
Entonces la asignación sería:
Saludos. |
segunda pregunta
eficsa gracias por tu explicacion me ayudo mucho el tema y un poco de ver codigo basico :confused::confused::confused:
ahora tengo otra pregunta cree dentro de esta funcion que retorna un array tipo variant otro array para irle asignando unos valores en los campos mi pregunta es el array ListArray es igual de tipo variant no se si debo crearlo asi i:interger i = 0; .... ListArray[i] := valor; i := i +1 para ir incrementado la posicion que solo tiene un valor ver parte del código
|
Hola Julyus.
Si, es correcto. Funciona como cualquier array; te vas desplazando por él incrementando o decrementando el subíndce. Ya sea utilizando una variable tipo contador, como pusiste en el post:
O con el uso de for:
Eso depende de como estructures el código. Saludos. :) |
La franja horaria es GMT +2. Ahora son las 23:23:50. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi