Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
1-68775
Павел Хабаров
2002-10-09 14:47
2002.10.21
Глюки с установкой


7-69032
иван
2002-07-11 17:22
2002.10.21
Работа с ОС


1-68851
vJet
2002-10-09 14:03
2002.10.21
Файл


1-68826
tts0
2002-10-10 10:13
2002.10.21
Как узнать размер PChar?


1-68794
Coal
2002-10-09 17:51
2002.10.21
Как реализовать свойство компонента так, чтобы в ObjectInspector





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский