![]() |
|
|
#1
|
|||
|
|||
|
Привет всем!!!
база данных dbf поле DDD тип С длина 6 на пятом месте всегда стоит дробь например 3333/3 или 4444/4 нужно получить деление т.е 1111 Теоритически надо "вырезать" запись с первой по четвертую и разделить на шестую а вот практически? Как присвоить переменной значение поля? |
|
#2
|
||||
|
||||
|
Код:
var
a,b:integer;
c:Single;
s:string;
begin
...
s:=[тут твой DataSet].FieldByName('DDD').AsString;
a:=StrToInt(copy(s,1,4));
b:=StrToInt(copy(s,6,1));
c:=a/b;
//как вариант, без a,b
c:=StrToInt(copy(s,1,4))/StrToInt(copy(s,6,1));
//Можно и без s, сам догадайся как :)
end; |
|
#3
|
|||
|
|||
|
А как теперь значению другого поля ,допустим 'ааа', присвоить значение полученной переменной С
|
|
#4
|
||||
|
||||
|
А если справку почитать, или примеры, те что Demos посмотреть?
|
|
#5
|
|||
|
|||
|
к сожалению английским не владею, а в своей деревне литературу найти трудно. Поэтому и задаю такие детские вопросы.
|
|
#6
|
||||
|
||||
|
Код:
[Твой DataSet].Edit;
[Твой DataSet].FieldByName('AAA').AsFloat:=c;
[Твой DataSet].Post; |
|
#7
|
|||
|
|||
|
Спасибо большое !!!
|
|
#8
|
|||
|
|||
|
Сделал так кинул код на батон
var s:string; c:Single; begin s:=table2.FieldByName('DDD').asString; c:= StrToInt(copy(s,1,4))/ StrToInt(copy(s,6,1)); table2.Edit ; table2.FieldByName('AAA').AsFloat:=c; table2.Post; end; выдает ошибку ''4444' is not a Valid integer value что делать? |
|
#9
|
||||
|
||||
|
Значит данные у тебя в поле не такие как ты описал.
Специально проверил: Код:
var c:Single; a:String; begin a:='4444\4'; c:=StrToInt(Copy(a,1,4))/StrToInt(Copy(a,6,1)); ShowMessage(FloatToStr(c)); end; Возможно поле в которое ты записываешь значение переменной у тебя целочисленное. Тогда попробуй так: Код:
var
s:string;
c:Integer;
begin
s:=table2.FieldByName('DDD').asString;
c:= StrToInt(copy(s,1,4)) div StrToInt(copy(s,6,1));
table2.Edit ;
table2.FieldByName('AAA').AsInteger:=c;
table2.Post;
end;Код:
var
s:string;
c:Single;
begin
s:=table2.FieldByName('DDD').asString;
c:= StrToInt(copy(s,1,4))/ StrToInt(copy(s,6,1));
table2.Edit ;
table2.FieldByName('AAA').AsInteger:=Trunc(c);
table2.Post;
end; |
|
#10
|
|||
|
|||
|
Да ошибка была в моих данных.
в поле Ddd стояли данные типа 4444/4, 444/4, 44/4 длина поля 6 дробь всегда на пятом месте Если не сложно подскажи как игнорировать пробелы и работать только с целыми числами. |
|
#11
|
||||
|
||||
|
Цитата:
Функция срезающая начальные и конечные пробелы в строке - Trim |