Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Несовместимость типов Delphi и SQL Server [D6, MSSQL]


Karlson ©   (2004-05-18 11:10:00) 

Добрый день! Возникла следующая проблема. В SQL Server есть процедура с параметром nvarchar (4000) (переменная @id_osn). Из Delphi через перменную @id_osn (типа WideString) компонента StoredProcedure передаю переменную Str (типа WideString - строка из цифр через пробелы, например "1 456 4 78"...). При большом количестве цифр в строке, происходит ошибка конвертации - в процедуру передается набор символов типа '\x1CÖ`\x1ù\x1'. Подскажите, пожалуйста.


Karlson   (2004-05-18 17:11:00) [1]

> что говорит?

Выводит нормальный набор нужных мне символов
(например "17 5 12 23 23 123 43 ...")


Danilka   (2004-05-18 12:29:00) [2]

кхм. а, например, вот так:

begin
for i:=0 to Add_Kartky.ListBox_Osn_To.Items.Count-1 do
   begin
   Str1 := Copy(Add_Kartky.ListBox_Osn_To.Items[i],length(Add_Kartky.ListBox_Osn_To.Items[i])-13,14);
   Str := Str + ' ' + intToStr(StrToInt(Str1));
   end;
   Str := IntToStr(Length(Str)) + ' ' + Str;

ShowMessage(Str);

            Module_AddUpd_Osn_Maloc_Soft.StoredProc_Add_Soft.ParamByName('@id_osn').AsString  := Str;
end;


что говорит?


Danilka   (2004-05-18 12:27:00) [3]

StoredProcedure - это что за компонент, БДЕ-шный TStoredProc?


Курдль   (2004-05-18 12:19:00) [4]

Замысловато...
А Module_AddUpd_Osn_Maloc_Soft.StoredProc_Add_Soft.ParamByName('@id_osn').AsString  := Add_Kartky.ListBox_Osn_To.Items.Text?


Karlson   (2004-05-18 11:56:00) [5]

begin
 for i:=0 to Add_Kartky.ListBox_Osn_To.Items.Count-1 do
    begin
    Str1 := Copy(Add_Kartky.ListBox_Osn_To.Items[i],length(Add_Kartky.ListBox_Osn_To.Items[i])-13,14);
    Str := Str + ' ' + intToStr(StrToInt(Str1));
    end;
    Str := IntToStr(Length(Str)) + ' ' + Str;
             Module_AddUpd_Osn_Maloc_Soft.StoredProc_Add_Soft.ParamByName('@id_osn').AsString  := Str;
end;
вот...


Курдль   (2004-05-18 11:48:00) [6]

Код в студию!


Karlson   (2004-05-18 11:44:00) [7]

> Johnmen

Возможно, я действительно глуплю, но и string и widestring и ansistring - все было и ничего не помогло


Johnmen   (2004-05-18 11:38:00) [8]

>От того, что string работает с 255 символами

Вот если бы ты не был так мнителен и неуместно задорен, то посмотрел бы хелп. И не писал бы ерунды...


Karlson   (2004-05-18 11:35:00) [9]

>а String  - ограниченные небольшим числом символов...

>Небольшое - это сколько ? :)
>string+F1

вы хотели помочь или поерничать? От того, что string работает с 255 символами, а не с небольшим количеством мне почему-то нелегче. вы программер или филолог?


Johnmen   (2004-05-18 11:30:00) [10]

>а String  - ограниченные небольшим числом символов...

Небольшое - это сколько ? :)
string+F1


Курдль   (2004-05-18 11:28:00) [11]


> String  - ограниченные небольшим числом символов...

???
4000 точно съест! А "строки, ограниченные размером памяти" - это Вам к BLOB!


Karlson   (2004-05-18 11:23:00) [12]

> А кто просил? Передавайте String и все проблемы уйдут!

Просить-то никто не просил, но WideString позволяет передавать строки, ограниченные размером памяти, а String  - ограниченные небольшим числом символов...


Курдль   (2004-05-18 11:15:00) [13]


> StoredProcedure передаю переменную Str (типа WideString

А кто просил? Передавайте String и все проблемы уйдут!


Ega23   (2004-05-18 11:12:00) [14]

TStoredProc - полный отстой ИМХО. Используй TQuery


Наверх

Титульная страница Поиск, карта сайта Написать письмо