Функция возвращает странное...

Dyadya Zed
Дата: 04.06.2004 16:41:54
Есть такая ф-ция в Access XP:

Public Const LANG_DEFAULT = &H400
Public Const LANG_ENGLISH_US = &H409
Public Const LANG_RUSSIAN = &H419
Public Const LANG_UKRAINIAN = &H422

Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Declare Function GetDateFormat Lib "kernel32" Alias "GetDateFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, lpDate As SYSTEMTIME, ByVal lpFormat As String, ByVal lpDateStr As String, ByVal cchDate As Long) As Long

Public Function GetStringFromDate(lLangID As Long, dtDate As Variant, strFormat As String) As String
Dim stSysDate As SYSTEMTIME
Dim strResult As String * 256
Dim lBufSize As Long, lRetVal As Long

GetStringFromDate = ""
If Not IsDate(dtDate) Then Exit Function

stSysDate.wDay = Day(dtDate)
stSysDate.wMonth = Month(dtDate)
stSysDate.wYear = Year(dtDate)

lBufSize = 256

lRetVal = GetDateFormat(lLangID, 0, stSysDate, strFormat, strResult, lBufSize)
If lRetVal <> 0 Then GetStringFromDate = strResult
End Function


В базу все выдает отлично..
Результат ф-ции такой "17 липня, 2003"

Когда пытаюсь данные экспортировать через объекты офиса в Word XP (как в книге Гетца написано), всё передается нормально, но поле обрабатываемое этой ф-цией в результате выдает после текста "17 липня, 2003" штук 100-200 квадратиков...

Как с этим бороться??? Хееелп!
paparome
Дата: 04.06.2004 16:51:11
Стринга из API функций возвращается в формате PSrting, т.е. оканчивается Chr(0)

надо ее преобразовать, откинуть то, что сзади

Function StringFromSz(szTmp As String) As String
    '  Если строка оканчивается нулями, вернуть усеченную строку.

Dim ich As Integer ich = InStr(szTmp, Chr$(0)) If ich Then StringFromSz = Left$(szTmp, ich - 1) Else StringFromSz = szTmp End If End Function

В вашей функции
...
lRetVal = GetDateFormat(lLangID, 0, stSysDate, strFormat, strResult, lBufSize)
If lRetVal <> 0 Then GetStringFromDate = StringFromSz(strResult)
End Function

?
Dyadya Zed
Дата: 04.06.2004 16:59:21
Огромное спасибо, помогло!!!!
Пытался бороться через Trim, не помогало..