Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

ASCII&Delphi   Найти похожие ветки 

 
stoper   (2002-12-25 18:12) [0]

Есть строка. Например
d:string;
d:=#0+#1+#2; label1.caption:=d;
label1.refresh;
В результате лабел пустой. Что бы я не делал я не вижу символов после chr(0).Почему?


 
Reindeer Moss Eater   (2002-12-25 18:31) [1]

Потому что это ограничитель длинной строки


 
stoper   (2002-12-25 18:38) [2]

Я не правильно поставил вопрос.Как побороть єту проблему.
У меня беда . Есть файл типа DBF.Так там в полях типа charter сплошь и рядом нули. А мне надо этот файл обработать. Я третий день борюсь с этой проблемой. Неужели нет решения.


 
Reindeer Moss Eater   (2002-12-25 18:42) [3]

В строках не должно быть символов с кодом $0000
И в строковых полях таблицы тоже.


 
Reindeer Moss Eater   (2002-12-25 18:44) [4]

А решение есть почти всегда.
Тебе что надо?


 
stoper   (2002-12-25 19:15) [5]

С чего все началось.
Эти вопросы я задавал на форуме по базам данных

dbf,ASCII [D5, dBase, FoxPro]
stoper (23.12.02 13:31)
Есть файл.dbf Практически все поля базы в том числе и превичные ключи состоят из ASCII символов. Для ключей используется один набор символов, для полей типа количество или сумма другой. Так вот когда я открываю базу то вижу значения некоторых полей, а вот поля количества и суммы у меня пустые. Через dbu все нормально. Дело в том что надо раскодировать поля, уже и функция написана. Да вот раскодировать нечего. Подскажите как быть кто знает. Я уже как только мог игрался с BDE и ODBC все напрасно. Может есть какой компонент позволяющий работать с dbf без BDE.
Заранее спасибо.


--------------------------------------------------------------------------------
stoper (23.12.02 17:17)
В моем гриде, в гриде BDE я не вижу значений в поле val.
Если написать per1:=table1val.asstring то per1="";
А на запрос select * from fgood where val="" не выдает запией вообще.


--------------------------------------------------------------------------------
stoper (24.12.02 11:22)
Так может кто-то всетаки поможет. Интересный момент. Я знаю какой набор символов должен быть в поле val. Беру table1val.asstring:=chr(175)+chr(28)+chr(226)+chr(155) и вижу то что надо.Так этот набор символов там уже есть . Почему я его невижу. Подскажите кто может. Дбфник набивался, с помощью проги написаной на клипере. Поля кодировались с помощью ассмблеровских функций.Так говорит содатель проги.


--------------------------------------------------------------------------------
Леван (24.12.02 12:01)
kakoi komponent ispolzuetsia dlia dostupa k tablice:
TDBF ili TTABLE?
(TDBF - storonnii komponent, vkliuchaet nenujnuliu TRANSLACIU v pole char ansitoeem ili oemtoansi.ee nado otkliuchit)


--------------------------------------------------------------------------------
stoper (24.12.02 12:34)
Леван Использую ТТable. TDBF-не имею.


--------------------------------------------------------------------------------
stoper (25.12.02 17:06)
Я наверное слишком назоилив.Но может всетаки ктото подскажет. Моя беде в том что в поле val имется chr(0).И вот если 0 присутствует BDE видимо ничего не понимает. Пробовал TDBF тоже самое.Но по идее раз поле симольное пиши в него что хочешь.

--------------------
Вот когда до меня дошло что я невижу то что начинается нуля.Я попробывал на лабеле. Хотя результат был известен заранее.


 
smok_er   (2002-12-25 19:30) [6]

у меня было что-то типа такого
только надо было добавлять в базу, предварительно обработав.
Естественно все, что после #0 - обрезалось.
Вылечилось следующим образом:

function CheckString(var Str: String): String
begin
for i := 0 to Length(Str) do
if Str[i] = #0 then Str[i] := #32; // Пробел
end;


 
stoper   (2002-12-25 19:40) [7]

Набить так можно. А как же все таки разглядеть.Неужто надо будет писать прибамбас на клипаке или фоксе. По перегону dbfника в нормальный вид, а потом загонять на SQL cервер.Так хотелось чтобы все одним махом.


 
ZrenBy ©   (2002-12-25 19:46) [8]

Можно попытаться прочитать запись функцией BDE

DbiReadBlock

потом, зная структуру таблицы заполнить
какой-нибудь array of byte.

Но я бы пошел путем stoper (25.12.02 19:40)


 
sniknik ©   (2002-12-25 21:27) [9]

опоздал я в ту ветку ты уже новую сделал.

from dbf,ASCII [D5, dBase, FoxPro]

sniknik © (25.12.02 18:09)
размер строк выставляется по #32 или #0 в конце строки, т.е. отсекаются с конца пока не другой символ.

Возьми Halcyon, там исходники, видно. С небольшими изменениями сделаеш как надо.
скачать.
http://www.vodonosov.newmail.ru/develop/develop.htm



 
JohnnyJ ©   (2002-12-26 10:58) [10]

Открой dbf как file of byte и замени все 0 в блоке данных на 32...


 
Anatoly Podgoretsky ©   (2002-12-26 11:24) [11]

А 32 на что бует менять, по спецификации на dBase(FoxPro) текстовое поле может содержать любые символы от #0 до #255
Может помочь попытка чтения этих данных напрямую через БДЕ как RAW данных


 
myor ©   (2002-12-26 11:26) [12]

попробуй изменить структуру бд в fox-е (если знаком).


 
Digitman ©   (2002-12-26 11:35) [13]

Именно как RAW. С BDE и DBF-форматом особых проблем не будет.

1. Расчитываем смещение целевого поля offs (+1 на символ-признак удал.записи)

2. Встаем на нужную запись.

3. Получаем зн-е св-ва TDataSet.ActiveBuffer

4. К полученному указателю на акт.буфер записи прибавляем смещение offs - получаем адрес, по которому можно считать/записать данные в целевое поле любым удобным способом (например, Move())


 
sniknik ©   (2002-12-26 11:46) [14]

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

по моему самое простое. (пол часа трассировки)

но не решение проблемы, как я понял данные закодированы и переменной длинны, как решать код кончился или символ #32-#0 в конце строки все еще часть кода? вот это по моему нерешаемо, без изменения условий.



 
stoper   (2002-12-26 16:00) [15]

Спасибо всем кто откликнулся на мой вопрос. Так как простых решений в Delphi мы не нашли (перекодировать 9 млн. записей),мы всетаки пошли путем написания дополнительной примочки на VFP.И таким оброзом решили свою проблему.Еще раз спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
14-62775
Sergo
2002-12-30 10:26
2003.01.20
Поздравляю!!!


3-62429
Херург
2002-12-26 20:51
2003.01.20
DBGrid: Title как Button


1-62508
grab3
2003-01-10 15:25
2003.01.20
String2Pchar


6-62709
VS2001
2002-11-22 06:39
2003.01.20
Многопоточная закачка по ФТП протоколу


3-62381
Essense
2002-12-24 11:10
2003.01.20
Too many concurrent executions