powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
16 сообщений из 16, страница 1 из 1
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995649
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Privet.
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
Ne v otdelnix poley, a vo vsex tablitse.
Yest li kakaya to komanda dlya etoqo?
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995761
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
use mydbf
lcCifra = '1'
? occur(lcCifra, substr(filetostr('mydbf.dbf'), header('mydbf') +  1 ))

Не сработает если есть поля типа int
Если файл большой, то могут быть проблемы с его размещением в памяти.

Любопытно: зачем это надо?
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995791
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Net polya tipa int.
Fayl ochen bolshoy,primerno 5000000 (mln) zapisey budet. Neznayu daje kak budet rabotat.
Eto dlya lotereynoqo iqra.
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995802
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd456Net polya tipa int.
Fayl ochen bolshoy,primerno 5000000 (mln) zapisey budet. Neznayu daje kak budet rabotat.
Eto dlya lotereynoqo iqra.
Вместо filetostr() можно использовать чтение файла блоками fread(...)
Размер блока должен быть пропорционален сектору диска (например 65536), тогда чтение будет быстрым.
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995810
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A kak eto komanda rabotaet: fread(..) ya ne ispolzuval etu komandu.
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995830
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это из набора функций для работы с файлами. Почитай help на fopen(), fread(), fclose(), feof()

Из хелпа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
FREAD( ) Function Example

The following example uses FREAD( ) to display the contents of a file. If the file is empty, a message is displayed.

* TEST.TXT must exist -- you can create this file
* using Notepad.

Local gnFileHandle,nSize,cString
gnFileHandle = FOPEN("test.txt")
* Seek to end of file to determine the number of bytes in the file
nSize =  FSEEK(gnFileHandle,  0 ,  2 )     && Move pointer to EOF
IF nSize <=  0 
 * If the file is empty, display an error message
 WAIT WINDOW "This file is empty!" NOWAIT
ELSE
 * If file is not empty, the program stores its contents
 * in memory, then displays the text on the main Visual FoxPro window
 = FSEEK(ggnFileHandle,  0 ,  0 )      && Move pointer to BOF
 cString = FREAD(gnFileHandle, nSize)
 ? cString
ENDIF
= FCLOSE(gnFileHandle)         && Close the file


Извини, но весь код писать некогда.
В твоем случае надо читать блоками до конца файла, проверять каждый блок на нужную цифру, и суммировать.
А ты первый вариант попробовал? Может заработает?
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995852
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1-y variant seychas budu proverit . Spasibo.
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33995875
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1-y variant takoy oshibku dayut:
"File access is denied"
No u menya etot fayl bolshe ni qde ne ispolzuyutsa.
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996323
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd4561-y variant takoy oshibku dayut:
"File access is denied"
No u menya etot fayl bolshe ni qde ne ispolzuyutsa.

Может у тебя таблицы монопольно по умолчанию открываюся?
попробуй use mydbf shared
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996455
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Da, vse pravilno , rabotaet. Spasibo.
Mojno li s pomoshi etoy komandu nayti eti tsifri i zamenit chem to druqoy, napirmer obnulyat?
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996486
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
I prictem rabotaet bistro. Seycas u menya v tablitse poltara milyona zapisey , no rabotaet ochen bistro, ya dumayu i s 5 milyonami ne budet problema.
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996622
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd456Da, vse pravilno , rabotaet. Spasibo.
Mojno li s pomoshi etoy komandu nayti eti tsifri i zamenit chem to druqoy, napirmer obnulyat?
Теоретически да, памяти только будет использовани в несколько раз больше
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
use mydbf
lcCifra = '1'
lcF = filetostr('mydbf.dbf')
lcHeader = left(lcF, header('mydbf'))
lcBody = substr(lcF, header('mydbf') +  1 )
? occur(lcCifra, lcBody)
lcBody = chrtran(lcBody, lcCifra, '0') && замена на '0'
StrToFile(lcHeader, 'mydbf2.dbf')
StrToFile(lcBody, 'mydbf2.dbf', .t.)
Данный код имеет место быть, но возможно нарушение структуры DBF, например если как-то пометка удаления установится.
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996708
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zdes mydbf2.dbf - novaya tablitsa, kotoriy posle obnulenie?
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996799
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd456Zdes mydbf2.dbf - novaya tablitsa, kotoriy posle obnulenie?
да
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996805
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо ерундой заниматься.

FoxPro - это СУБД. Т.е. изначально рассчитана на работу с таблицами, как файлами высого уровня. Работа с текстовыми файлами (низкий уровень) будет заведомо медленнее.

Это значит, что просканировать все поля всех записей и сделать нужные замены будет быстрее и проще, чем вскрывать DBF и что-то там искать. Точнее, средствами FoxPro быстрее и проще.

Вы лучше внятно сформулируйте задачу. Что именно надо сделать. Ведь "заменить цифру 1 на цифру 0" - это слишком расплывчато.

Где именно заменить? Если записана дата 1995 год надо в ней заменять цифру 1 на 0? Если записано число 10 тоже заменить 1 на 0?

А о какой версии файла DBF идет речь? Вы вообще в курсе, что есть служебные поля в которых менять ничего не надо. Например, признак удаленной записи, признак NULL, признак VarChar.

А мемо-поля у таблицы есть? А в них надо что-то заменять? А индексы?

Т.е. вопросов "вагон и маленькая тележка". Причем это далеко не все вопросы, которые неизбежно возникнут, если Вы пойдете по пути низкоуровневой модификации таблиц. Заменить только то, что нужно и при этом не испортить структуру таблицы - очень не тривиальная задача. Может все-таки делать все "стандартным" способом?
...
Рейтинг: 0 / 0
Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
    #33996832
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spasibo, Dima. Eto pomoemu to chto nado mne. Vi ochen pomaqli mne.
I yeshyo posledniy vopros.
Mne nado napolnit tablitsu, no u menya ochen dolqo poluchaetsa.
Nado vot takoy tablitsu napolnit (a.dbf)
To yest v 1-y pole (polya a1) doljno naxoditsa ot 1 do 9,
2-m pole (polya A2) ot 10 do 19
3-m pole (polya A3) ot 20 do 29
4-m pole (polya A4) ot 30 do 39
5-m pole (polya A5) ot 40 do 50
Sostavlenie etoy tablitsu u menya ochen mnoqo vremeni zanimaet.
Kak mojno bistro napolnit takoy tablitsu?
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Kak mojno bistro nayti kakaya to tsifr skolko raz prisutstvuet v tablitse?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]