|
|
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
Здравствуйте... После вызова функции: LPARAMETERS cPath public lcResult AS string , lnResult AS Integer m.lcResult = SPACE(32000) DECLARE INTEGER GetPrivateProfileSection IN WIN32API STRING, STRING @, INTEGER, STRING m.lnResult = GetPrivateProfileSection(m.cPath, @lcResult, 32000, this.cFileName) m.lcResult = LEFT(m.lcResult, m.lnResult) CLEAR DLLS 'GetPrivateProfileSection' RETURN m.lcResult вот таким способом: m.dbs = this.parent.Parentform.formparam1.getlist('Базы данных') получаю: m.dbs="REG_ASU=\\STAR\ASU_DB\REG_ASU.DBC P_NSI01=D:\WORCK\COMM\DOGOVOR\DB\NSI\P_NSI01.DBC P_WORK01=\\STAR\DB\COMM\P_WORK01.DBC" Почему GETWORDCOUNT(m.dbs,' ') = 1 Не понимаю почему 1, я хочу 3. В MSDNе написано следующее: DWORD GetPrivateProfileSection( LPCTSTR lpAppName, // section name LPTSTR lpReturnedString, // return buffer DWORD nSize, // size of return buffer LPCTSTR lpFileName // initialization file name ); Parameters lpAppName [in] Pointer to a null-terminated string specifying the name of the section in the initialization file. lpReturnedString [out] Pointer to a buffer that receives the key name and value pairs associated with the named section. The buffer is filled with one or more null-terminated strings; the last string is followed by a second null character. Что такое "null character"... как его записать в GETWORDCOUNT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 17:15 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 17:20 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
GETWORDCOUNT(m.dbs,CHR(0)) = 1 GETWORDCOUNT(m.dbs,' ') = 1 GETWORDCOUNT(m.dbs,CHR(1)) = 1 GETWORDCOUNT(m.dbs,CHR(2)) = 1 GETWORDCOUNT(m.dbs,CHR(3)) = 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 17:23 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
Как работать с ini-файлами В твоем случае просто посмотри какое именно слово полчилось-то ?GetWordNum(m.dbs,1,' ') Т.е. какой именно символ был воспринят как символ-разделитель слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 19:21 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
А что выдаст GETWORDCOUNT(m.dbs) GETWORDCOUNT(m.dbs,CHR(10)) GETWORDCOUNT(m.dbs,CHR(13)) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 19:31 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
Символ-разделитель: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 19:45 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
fox_vikА что выдаст GETWORDCOUNT(m.dbs) GETWORDCOUNT(m.dbs,CHR(10)) GETWORDCOUNT(m.dbs,CHR(13)) ? А на все CHR() начиная с 0 и заканчивая 20-м (по этот я проверял) =1. Я не могу понять какой у этих строк символ-разделитель! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 00:07 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
splayn fox_vikА что выдаст GETWORDCOUNT(m.dbs) GETWORDCOUNT(m.dbs,CHR(10)) GETWORDCOUNT(m.dbs,CHR(13)) ? А на все CHR() начиная с 0 и заканчивая 20-м (по этот я проверял) =1. Я не могу понять какой у этих строк символ-разделитель! Pointer to a null-terminated string specifying the name of the section in the initialization file. Указатель на строку с нулевым символом в конце, определяющую название раздела в файле инициализации. 1) Если посмотреть первый твой пост, то null-terminated string в С и С++ это \n - конец стоки или LF или на фоксе chr(10). 2) Но ты его в строке так просто не не увидишь - это как понимаешь не отображаемый символ. 3) В двоичном редакторе увидишь обязательно код 0Ah 4) Если проанализируешь нужную строку(как строку вдоичных данных) в цикле с выводом кода симвода увидишь где этот символ стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 08:54 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Как работать с ini-файлами В твоем случае просто посмотри какое именно слово полчилось-то ?GetWordNum(m.dbs,1,' ') Т.е. какой именно символ был воспринят как символ-разделитель слов. getwordnum(m.dbs,1,chr(10)) и getwordnum(m.dbs,1,chr(0)) - получаю полную строку без изменений. И вот еще, что заметил: at(chr(0),m.dbs)=34 ! alltrim(m.dbs,1,chr(0)) - получаю строку без разделителей, сплошной текст. Я понимаю, что там стоят символы-разделители... мне не понятно, почему я не могу из этой строки выбрать необходимые слова между этих символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 10:08 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
Причем getwordnum(m.dbs,2,chr(0)) = "" getwordnum(m.dbs,2,chr(10)) = "" getwordnum(m.dbs,2," ") = "" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 10:11 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
Скорее всего GetWord... не понимают chr(0) Код: plaintext 1. VFP 9.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 10:51 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
aaa="Word1"+CHR(10)+"Word2"+CHR(10)+"Word3" ?GETWORDCOUNT(aaa,CHR(10)) Возвращает 3 Можно попробовать заменить в m.dbs все chr(0) на chr(10) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 10:54 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
fox_vikaaa="Word1"+CHR(10)+"Word2"+CHR(10)+"Word3" ?GETWORDCOUNT(aaa,CHR(10)) Возвращает 3 Можно попробовать заменить в m.dbs все chr(0) на chr(10) m.dbs = CHRTRAN(m.dbs,CHR(0),CHR(10)) Всем огромное спасибо... помогло... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 12:26 |
|
||
|
GETWORDCOUNT и DLL c null character
|
|||
|---|---|---|---|
|
#18+
Встроенные функции VFP GETWORDNUM( ) , GETWORDCOUNT( ) так же как и функция strfilter() из библиотеки foxtools , не работают со строкам содержащими символ с кодом нуль. Если строка содержит символ с кодом нуль, то вышеупомянутые функции возвращают неправильный результат, это связано с тем что в языке C нулевой символ интерпретируется строковыми функциями как конец строки. Функция ALINES() корректно работает со строкам содержащими символ с кодом нуль, ее можно использовать для подсчета слов и извлечения слова, причем ее возможности значительно больше нежели у функций GETWORDNUM( ) , GETWORDCOUNT( ), хотя и синтаксис сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 19:49 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34326043&tid=1589888]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 367ms |

| 0 / 0 |
