Форум: "Базы";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
ВнизНемогу преобразовать поле из таблицы Найти похожие ветки
← →
PAVELsinicinV (2002-09-30 18:57) [0]Немогу преобразовать поле из таблицы "TableGroup1.AsString" символьного типа (Char(2)) в числовое представление "Numeric".
Может кто подскажет ...
← →
Best Before 2024 (2002-09-30 19:02) [1]Что там, в этом поле? Цифры? Символы? Давайте подробнее...
← →
PAVELsinicinV (2002-09-30 19:16) [2]Там символы (по аналогии в Фоксе сущесутвует функция ASC() которая преобразовывает символьный тип к числовому).
Размерность поля 2.
В этом поле лежит номер записи другой таблицы (коряво конечно но исходные базы такие.....)
← →
PAVELsinicinV (2002-09-30 19:23) [3]Как быть ?
← →
Best Before 2024 (2002-09-30 19:24) [4]Попробуй так:
S := Table.Field.AsString;
N := Ord(S[1]) shl 8 + Ord(S[2]);
Если в первом байте - старшая часть, а во втором младшая
← →
PAVELsinicinV (2002-09-30 19:28) [5]Пробую ....
← →
PAVELsinicinV (2002-09-30 19:34) [6]Ерудна получается в этом поле содержиться максимум 512
Мне нужно чтобы из этого поля вытянуть номер записи другой таблицы воттак вот .........
← →
Peter Gluhiy (2002-09-30 19:37) [7]А TableGroup1.AsInteger не работает?
← →
PAVELsinicinV (2002-09-30 19:38) [8]нет пишет нетот тип поля и он прав так как поле символьного типа
← →
Best Before 2024 (2002-09-30 19:40) [9]>>Ерудна получается в этом поле содержиться максимум 512
Кто это сказал, что 512?
Хорошо бы парочку примеров
S := Table.Field.AsString;
Я так понимаю, что длина S = 2?
хорошо бы узнать, чему равен Ord(S[1]) и Ord(S[2]) на примере нескольких записей, а потом уже думать.
← →
Peter Gluhiy (2002-09-30 19:48) [10]А так:
N := StrToInt(TableGroup1.AsString);
← →
PAVELsinicinV (2002-09-30 19:49) [11]Лады
код примерно такой
s:=(Table4GROUP1.AsString);
i:= Ord(S[1]) shl 8 + Ord(S[2]);
RichEdit1.Lines.Add(Inttostr(i));
Результат
4096
59392
4352
4096
4096
4096
25088
4096
57856
4096
4096
4096
28672
4096
4096
25088
4096
25088
4352
23552
59904
4096
23552
60160
....................
← →
Best Before 2024 (2002-09-30 19:52) [12]И что в этом плохого - это же числа?
Если записано наоборот (сначала младшая, потом старшая часть) то можно попробовать
i:= Ord(S[ 2]) shl 8 + Ord(S[ 1]);
Повторяю,
хорошо бы узнать, чему равен Ord(S[1]) и Ord(S[2]) на примере нескольких записей, а потом уже думать.
← →
PAVELsinicinV (2002-09-30 19:54) [13]N := StrToInt(TableGroup1.AsString);
точне StrToInt не может "
← →
Best Before 2024 (2002-09-30 19:57) [14]
i:= Ord(S[2]) shl 8 + Ord(S[1]);
← →
PAVELsinicinV (2002-09-30 20:02) [15]i2:=Ord(S[2]) дает одни нули, а i:= (Ord(S[1]) shl 8)
4096
59392
4352
4096
4096
4096
25088
4096
59136
26368
4096
4096
28416
4096
8960
57856
4096
4096
4096
28672
4096
← →
Peter Gluhiy (2002-09-30 20:04) [16]Ну, если в базе у тебя не цифры, то в Numeric не переведешь.
Посмотри чем-нибудь информацию в базе.
← →
Best Before 2024 (2002-09-30 20:05) [17]Значит старшая часть числа - во втором байте и надо писать так:
i:= Ord(S[2]) shl 8 + Ord(S[1]);
← →
Best Before 2024 (2002-09-30 20:07) [18]2 Peter Gluhiy
В базе, похоже, число в двоичном виде 2 байта
← →
PAVELsinicinV (2002-09-30 20:13) [19]если использовать код s:=VarToStr(Table4GROUP1.AsString);
RichEdit1.Lines.Add((s));
то она содержит:
и
b
з
g
o
#
в
p
b
b
\
к
\
л
b
o
з
o
Э
o
o
и
o
Ю
o
o
b
p
p
и
o
b
g
\
y
x
p
з
д
b
o
o
в
o
Д
Ю
o
o
b
b
x
z
в
o
x
x
г
b
з
b
g
z
o
o
o
o
o
Ь
x
x
и
b
o
o
Ь
Ю
к
o
Ю
o
o
Ь
p
p
b
o
\
b
o
p
o
b
в
o
o
o
b
ж
Н
o
g
o
Ь
в
o
b
o
o
Д
p
b
x
o
b
и
#
з
Ю
o
ж
o
o
з
p
o
p
g
o
Д
Л
b
b
o
з
Э
b
x
Д
o
и
o
b
p
Э
и
Ь
з
Ю
o
b
з
o
o
з
o
в
Ю
Я
o
o
b
g
o
p
o
p
o
С
\
o
o
o
\
o
o
o
Ю
b
ж
p
o
o
o
ж
o
p
Э
з
\
Ю
b
g
Э
b
в
д
p
o
x
o
b
o
g
o
й
o
o
g
Ю
o
Д
p
p
g
o
o
b
з
o
o
Д
z
#
и
\
b
Д
\
з
o
ж
з
o
o
o
o
b
и
o
o
o
o
д
o
o
b
o
b
o
b
o
o
o
o
g
\
p
в
Ю
Н
o
и
o
\
p
Я
Ь
o
o
#
а если вот это то16
232
17
16
16
16
98
16
231
103
16
16
111
16
35
226
16
16
16
112
16
16
98
16
98
17
92
234
более менее на чтото похожее ..
← →
Best Before 2024 (2002-09-30 20:16) [20]Успокойте меня!!
i:= Ord(S[2]) shl 8 + Ord(S[1]);
Помогло или нет?!
Если нет, пойду и застрелюсь :(
← →
PAVELsinicinV (2002-09-30 20:17) [21]ПАСИБА МУЖИКИ БУДУТЕ У НАС ЖДЕМ В ГОСТИ pvs1@pochtamt.ru
← →
PAVELsinicinV (2002-09-30 20:18) [22]ICQ 152726639
← →
sniknik (2002-09-30 20:18) [23]бред сивой кобылы. без исходных данных обсуждение бессмысленно.
уже пол часа читаю и так и не понял чего тебе надо? и что же там в конце концов лежит? ты не вы%;$;ся ты пальцем покажи. примерно так есть в поле "678" символьное оно означает 786 в числе, хочу получить 687 а получается 2 или наоборот. а то кокието обрывки неполной информации.
для справки ASC() в фоксе преобразует 1 символ слева в дельфях аналогия Ord("c") только он символьный м не понимает строк.
← →
Peter Gluhiy (2002-09-30 20:18) [24]Круто!
А зачем надо в Numeric?
← →
Best Before 2024 (2002-09-30 20:28) [25]2 sniknik
>>бред сивой кобылы. без исходных данных обсуждение бессмысленно.
>>уже пол часа читаю и так и не понял чего тебе надо? и что же >>там в конце концов лежит?
Если в 2х байтах лежит номер записи, и всякое такое вроде StrToInt не проходит, значит какой-то умник запихал туда в 90х годах (из экономии места) номер записи в двоичном виде, чем очень озадачил автора вопроса :)
← →
sniknik (2002-09-30 20:36) [26]то что там чтото непонятное как раз ясно но он ни разу не приводит что он пытается преобразовать, пример, исходные данные. толко все повторяет что символьные и почемуто не могут быть больше 512 почему? два байта = ворд, гораздо больше. а представление? вот писатели на С посмеялись бы.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.008 c