Есть ли какая-нибудь функция powerbuilder, которая эквивалентна PHP-функции "взрыва" - PullRequest
1 голос
/ 30 июня 2010

Я думаю, что само название довольно очевидно. Есть ли в powerbuilder какая-либо функция, эквивалентная PHP-функции "взрыва"?

Для PHP "взорваться", см. Следующую ссылку: PHP взорваться

Ответы [ 2 ]

3 голосов
/ 01 июля 2010

Powerbuilder используется почти исключительно для приложений, интенсивно использующих базы данных, для этого может быть более целесообразно использовать вашу систему баз данных.

Если вы используете Sybase SQL Anywhere, среда выполнения которого поставляется вместе с Powerbuilder, вы можете использовать системную процедуру sa_split_list

Или вы можете создать свою собственную,PFC включает эту функцию, которую вы можете использовать

//////////////////////////////////////////////////////////////////////////////
//
//  Function:  of_ParseToArray
//
//  Access:  public
//
//  Arguments:
//  as_Source   The string to parse.
//  as_Delimiter   The delimeter string.
//  as_Array[]   The array to be filled with the parsed strings, passed by reference.
//
//  Returns:  long
//  The number of elements in the array.
//  If as_Source or as_Delimeter is NULL, function returns NULL.
//
//  Description:  Parse a string into array elements using a delimeter string.
//
//////////////////////////////////////////////////////////////////////////////
//
//  Revision History
//
//  Version
//  5.0   Initial version
//  5.0.02   Fixed problem when delimiter is last character of string.

//     Ref array and return code gave incorrect results.
//
//////////////////////////////////////////////////////////////////////////////
//
/*
 * Open Source PowerBuilder Foundation Class Libraries
 *
 * Copyright (c) 2004-2005, All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted in accordance with the GNU Lesser General
 * Public License Version 2.1, February 1999
 *
 * http://www.gnu.org/copyleft/lesser.html
 *
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals and was originally based on software copyright (c) 
 * 1996-2004 Sybase, Inc. http://www.sybase.com.  For more
 * information on the Open Source PowerBuilder Foundation Class
 * Libraries see http://pfc.codexchange.sybase.com
*/
//
//////////////////////////////////////////////////////////////////////////////

long        ll_DelLen, ll_Pos, ll_Count, ll_Start, ll_Length
string  ls_holder

//Check for NULL
IF IsNull(as_source) or IsNull(as_delimiter) Then
    long ll_null
    SetNull(ll_null)
    Return ll_null
End If

//Check for at leat one entry
If Trim (as_source) = '' Then
    Return 0
End If

//Get the length of the delimeter
ll_DelLen = Len(as_Delimiter)

ll_Pos =  Pos(Upper(as_source), Upper(as_Delimiter))

//Only one entry was found
if ll_Pos = 0 then
    as_Array[1] = as_source
    return 1
end if

//More than one entry was found - loop to get all of them
ll_Count = 0
ll_Start = 1
Do While ll_Pos > 0

    //Set current entry
    ll_Length = ll_Pos - ll_Start
    ls_holder = Mid (as_source, ll_start, ll_length)

    // Update array and counter
    ll_Count ++
    as_Array[ll_Count] = ls_holder

    //Set the new starting position
    ll_Start = ll_Pos + ll_DelLen

    ll_Pos =  Pos(Upper(as_source), Upper(as_Delimiter), ll_Start)
Loop

//Set last entry
ls_holder = Mid (as_source, ll_start, Len (as_source))

// Update array and counter if necessary
if Len (ls_holder) > 0 then
    ll_count++
    as_Array[ll_Count] = ls_holder
end if

//Return the number of entries found
Return ll_Count
3 голосов
/ 30 июня 2010

Не встроенный, но PFC String Service имеет of_parse_to_array(), что делает то же самое, что и PHP explode(), за исключением limit .Если вы не используете PFC, вы можете просто поднять of_parse_to_array() (сохраняя, конечно, уведомление об авторских правах), или вы можете получить pfc_n_base, n_base, pfc_n_cst_string и n_cst_string и получить весь сервис строк.Если вам действительно нужно limit , легко добавить перегруженную версию of_parse_to_array(), которая реализует limit .

...