powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MEMO в DBF
25 сообщений из 107, страница 3 из 5
MEMO в DBF
    #33337830
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вот хамить не стоит, я же писал уже
твой уникальный код не работает

я написал код, который будет работать

так в чем же уникальность то
в километре
...
Рейтинг: 0 / 0
MEMO в DBF
    #33337849
Кусакин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если ты баран, то у тебя не работает. У меня работает. А личное творчесво составления кода я и не обязан тут коментировать. Иди, ищи ошибки. Что-то згачит накосячил.
...
Рейтинг: 0 / 0
MEMO в DBF
    #33337981
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 alex11100
А что это у тебя - cStr?
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338138
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 alex11100
Все работает. Нехватает только такого условия перед репласе
ss = atc(lcStr,cAllNewMemo)
if ss=1
cAllNewMemo = substr(cAllNewMemo,3)
endif


2 Кусакин
тоже работает.

Огромное Вам Всем Спасибо. Выручили. Данные примеры пригодяться всем. Так как мало кто знает как работать с мемо-полями.
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338227
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, буковку l забыл, когда перенабирал

да проверяй только на количество возможных строк, я там не ставил, чтобы покороче было


memo поле - обычная длинная строка
это в твоем случае ты ее делишь сам на строки
переводом каретки

этого может и не быть
у меня был случай, когда в таблицу
я дополнительно в мемо засовывал еще 7 упакованных таблов
на каждую запись (НДФЛ-2) (ну это свой прикол-так нужно было)
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338230
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да и из вопроса

Задача такова: В мемо поле у меня 10 строчек. в пятой сторчке значение abcd. Как заменить только эту строчку на dcba при этом не переписывая по новой мемо-поле?

я вначале понял, что ты не хочешь реплейсить

а реплейс как раз поновой переписывает!!!!
он удлинняет фтп-файл
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338237
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты правильно все понял, но без реплейса как я понял мне не достичь моего результат, никак.
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338291
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно поломать голову

что у тебя хранится
в строке, которая меняет длину ??
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338298
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно знать сколько будет максимальная длина???

может всеже резервировать под это изменение место??

да если там число какое - его можно поджать своим интежером

если строка - может хранить ссылку на другое место (к примеру хранить эти меняющие длину строки в другой табле????)


ну а вообще так замарачиваться необходимо
если действительно это нужно
если нужно вкрай, то можно голову поломать
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338447
Кусакин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТО alex11100: нажми F1, нади описание устройства мемки и ума хватит, рули Думать он собрался
ЕСи ты такой спец, дава, вылоди сюда FLL/DLL ( Win32,OLE) по манипулированию мемками (и не только ). Ну ? Когда выложишь?
...
Рейтинг: 0 / 0
MEMO в DBF
    #33338612
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то Вы тут странными вещами занимаетесь.
Если Вы не Hacker, то для Вас должно хватить стандартных средств для работы с Memo полями.

В простом случае надо блокировать запись, затем:
- читать каждую строку в новый массив , применяя стандартную функцию FoxPro: MLINE()
- дойдя до десятой строки - поменять ее
- сохранить получившийся массив в Memo поле
- разблокировать запись.

Для особо пытливых - можно разработать и более быстрый алгоритм.

Good luck!
...
Рейтинг: 0 / 0
MEMO в DBF
    #33339000
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sergey Ch
А можно алгоритм этого способа? А то я массивы очень плохо знаю.
...
Рейтинг: 0 / 0
MEMO в DBF
    #33339002
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В help описаны целых 2 способа применения mline(), с memlines() (более медленный, но более понятный) и без.
...
Рейтинг: 0 / 0
MEMO в DBF
    #33339258
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что означает эта запись? - @ ln,2 SAY 'XXXD'
...
Рейтинг: 0 / 0
MEMO в DBF
    #33339261
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как создовать массив и построчно заносить строки, а потом из него в мемо. В хелпе ниче такого не нашел.
...
Рейтинг: 0 / 0
MEMO в DBF
    #33340559
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийЧто означает эта запись? - @ ln,2 SAY 'XXXD'
SAY - это то же самое, что в старших версиях Label. Т.е. некий текст, который выводиться начиная с указанной позиции и не предназначен для редактирования.

НедоходящийИ как создовать массив и построчно заносить строки, а потом из него в мемо. В хелпе ниче такого не нашел.
Хм...

С точки зрения FoxPro, содержимое мемо-поля - это обычная символьная строка.

Переход на другую строку осуществляется по комбинации символов Chr(13)+Chr(10). Точнее, FoxPro поймет как переход на другую строку любой из этих символов в отдельности и люую их комбинацию. Просто в качестве значения по умолчанию для перехода на новую строку используется именно эта пара символов и именно в такой последовательности.

Таким образом, перенести содержимое массива в мемо-поле можно перебрав все строки массива в цикле и сформировав большую символьную строку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
* Исходный массив
DIMENSION aTest[ 5 , 1 ]
aTest[ 1 , 1 ] = "Перва строка"
aTest[ 2 , 1 ] = "Вторая строка"
aTest[ 3 , 1 ] = "Третья строка"
aTest[ 4 , 1 ] = "Четвертая строка"
aTest[ 5 , 1 ] = "Пятая строка"

* Формируем символьную строку
m.cString = ""
FOR lnI =  1  TO ALEN(aTest, 1 )
	IF m.lnI >  1 
		m.cString = m.cString + CHR( 13 ) + CHR( 10 )
	ENDIF
	cString = m.cString + aTest[m.lnI, 1 ]
ENDFOR
* Запись в мемо-поле
SELECT MyTab
REPLACE MyMemo WITH m.cString

При по строчном чтении данных из мемо-поля через функции MLINE() следует иметь в виду, что в этом случае окончание строки определяется по более сложному алгортиму.

Длина строки считается равной количеству символов, указанному в настройке SET MEMOWIDTH

Сиволы пробелов "между строками" игнорируются при анализе на SET MEMOWIDTH

Символы CHR(13) и CHR(10) в любой комбинации являются безусловным признаком перевода строки вне зависимости от количества символов оставшихся до конца строки по SET MEMOWIDTH

Повторюсь, это используется только при чтении из мемо-поля. При записи - это уже роли не играет.

По умолчанию, используется настройка

SET MEMOWIDTH TO 50

Если для Вас следующая строка - это строка после символов CHR(13) и CHR(10), то следует убедиться, что задано нужное количество символов или отказаться от использования функций строкового анализа мемо-полей и самостоятельно искать очередное вхождение символов Chr(13) и Chr(10)
...
Рейтинг: 0 / 0
MEMO в DBF
    #33341162
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ
Спасибо за информацию. сейчас вставляю и пробую в свой проект.
У меня к Вам вопрос. Вы когда нить создовали программу с возможностью сохранения n-е кол-во параметров под разными именами? А потом по желанию выбирать любое имя и соответствующие этому имени параметры загружать?
...
Рейтинг: 0 / 0
MEMO в DBF
    #33341177
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конечно же
все в фоксе так делают
сам фокс так написан
посмотри Use имяформы.scx
там в мемо полях - свойства объектов

так и для себя пишем

fff=
hhh=
kkk=

как это искать???
да очень просто
все в массив
в 1 колонку все что слева от =
во 2-ю - все что справа от =

пишешь для себя несколько функций
и все, случилось чудо
...
Рейтинг: 0 / 0
MEMO в DBF
    #33341228
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийВы когда нить создовали программу с возможностью сохранения n-е кол-во параметров под разными именами? А потом по желанию выбирать любое имя и соответствующие этому имени параметры загружать?
Уточни вопрос.

Я стараюсь избегать переменного значения имени параметра. Т.е., конечно, это можно сделать, но, обычно не требуется.

Если распишешь более подробно саму постановку задачи, то, скорее всего, в этом не будет необходимости.

Например, я делал формулы расчета, которые вводят пользователи. Есть список переменных для этих формул (таблица) и есть собственно формула (2 мемо-поля). Пользователь может добавлять/удалять переменные. Но внутри кода никаких "разных имен" не наблюдается.

Для чего нужны эти переменные наборы параметров в твоем случае?
...
Рейтинг: 0 / 0
MEMO в DBF
    #33341255
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я разрабатываю подпрограмму в которую заносится одна таблица и из этой таблицы пользователь выбирает требуемые столбцы и выстовляет к каждому столбцу свои фильтры, потом выводит в ексель. Все что юзер наделал требуется сохранить под именем которое он введет. таких сохранений должно быть столько, сколько юзер захочет (под разными именами). При повторном запуспе должны загружаться все параметры фильтров и выбранных столбцов из последнего сохранения + возможность загружать уже раннее созданиые сохранения. У меня все практически готово, запинка как раз в выборе способы занесения параметров фильтров в мемо, и САМОЕ ГЛАВНОЕ если что-то было изменено, то нужно и изменить только требуюмую строчку(и) при этом все остальное сохраняя. Мой способ который я еще додумываю мне ненравиться, уж больно он не надежен. Поэтому обращаюсь к Вам, может вы что-то посоветуете?
...
Рейтинг: 0 / 0
MEMO в DBF
    #33341413
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, без полной перезаписи мемо-поля не обойтись. Просто FoxPro не умеет по другому. Самое большее на что он способен, это добавить в конец (опция ADDITIVE в команде REPLACE). Так что с этим фактом придется смириться.

Другое дело - это "разобрать" мемо-поле на "части", заменить нужную часть и снова собрать.

Поскольку ты хочешь хранить в мемо-поле разрозненную (не связанную) друг с другом информацию, то посмотри как это обычно храниться в реквизитах формы. Например, типичное содержание мемо-поля, задающего реквизиты Grid

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ColumnCount =  2 
DeleteMark = .F.
Height =  113 
Left =  13 
RecordMark = .F.
RecordSource = "dogpol"
RecordSourceType =  1 
SplitBar = .F.
Top =  1 
Width =  587 
Name = "grdDogpol"
Column1.ControlSource = "dogpol.nomer"
Column1.Name = "Column4"
Column2.ControlSource = "dogpol.datecreate"
Column2.Name = "Column5"

Использовать такое в коде очень просто:

Код: plaintext
1.
2.
cString = (содержимое одной строки)
ThisForm.Grid1.&cString

Однако в данном случае используется принцип: одна запись - один объект. У тебя же необходимо объединить в одной записи несколько разнотипнах объектов (столбцы и фильтры). Т.е. к схеме

реквизит = значение

Надо добавить 3 параметр - тип реквизита.

Именно по такой схеме построены ini-файлы:

структура ini-файла
[секция1]
ключ1 = значение
ключ2 = значение

[секция2]
ключ1 = значение
ключ2 = значение


ini-файл - это обычный текстовый файл. Загнать его в мемо-поле (как, впрочем, и вытащить из него) - никаких проблем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
* Из мемо-поля в файл
select MyTab
COPY MEMO MyMemo TO MyFile.ini

* Из файла в мемо-поле
select MyTab
APPEND MEMO MyMemo FROM MyFile.ini

Как работать с ini-файлами описано здесь

Как работать с ini-файлами

Т.е. получается такая схема:

Из мемо-поля создаешь временный ini-файл

Выполняешь в этом файле все необходимые преобразования

Записываешь содержимое этого ini-файла обратно в мемо

Удаляешь уже не нужный ini-файл

Для того, чтобы определить структуру ini-файла надо в качестве имени секции или имени ключа указать значение 0. Получишь строку со списком имен секций или списком имен ключей указанной секции разделенных символом CHR(0)
...
Рейтинг: 0 / 0
MEMO в DBF
    #33341957
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отлично! Спасибо за способ, чувствуется в нем надежность. Теперь внедряю в свой проект. У меня вопрос. На форме есть комбо. При загрузке формы он скрат. С помощью & я его делаю видимым, имеет сонтрол-соурс. Как в его текст-поле загонять значение?
...
Рейтинг: 0 / 0
MEMO в DBF
    #33341984
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и еще вопрос. Как прописать условие фильтра к полю ddd (в котором только числовае значения) для вывода четных и нечетных чисел?
...
Рейтинг: 0 / 0
MEMO в DBF
    #33342012
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Как прописать условие фильтра к полю ddd (в котором только числовае значения) для вывода четных и нечетных чисел?
SET FILTER TO Mod(ddd, 2) = 0 && четные

SET FILTER TO Mod(ddd, 2) <> 0 && нечетные
...
Рейтинг: 0 / 0
MEMO в DBF
    #33342018
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийНа форме есть комбо. При загрузке формы он скрат. С помощью & я его делаю видимым, имеет сонтрол-соурс. Как в его текст-поле загонять значение?

Код: plaintext
ThisForm.Combo1.DisplayValue = "Отображаемый текст"
...
Рейтинг: 0 / 0
25 сообщений из 107, страница 3 из 5
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MEMO в DBF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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