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

Вниз

Ошибка преобразований типов, для информации. Просьба проверить.   Найти похожие ветки 

 
sniknik ©   (2002-04-01 12:32) [0]

Столкнулся со странной ошибкой в простой операции
St:= Ph;
St тип string, Ph PChar;
должно сработать приведение типов. и оно работает но значение Ph меняется! Чего в принцибе быть не должно. (к концу строки добавляется квадратик, ноль чтоли так отображается). в обшем я просто занес значение #0 туда, но возможно в другом Delphi или конфигурации это будет давать ошибку (у меня передается значение "com2" изза одной буквы все рушится).
просьба у кого пятый Delphi проверить (не переустанавливать же его изза такой ерунды).
заранее спасибо.


 
watcher   (2002-04-01 12:45) [1]

а может тот ph указывает на St ??
Как он инициализируеться ?


 
sniknik ©   (2002-04-01 12:55) [2]

ну это пример
вот на самом деле
TDatMax = Class (TObject)
Port: String;
...

это St

а вот присвоение

function TDatMax.InitCOMPort(xPort:PChar; BaudRate:Integer): Boolean;
var
DCBv: TDCB;
TOv: COMMTIMEOUTS;
begin
Port:= xPort;
.....
вот после этого значение xPort меняется.

можно и Port сделать PChar и xPort стрингом. эт не вопрос. мне показалось проще восстановить значение, чтобы не менять везде.


 
Digitman ©   (2002-04-02 13:22) [3]

Не выдумывай небылиц, xPort не может поменяться "просто так", сам по себе. Где-то в коде, что ты явно не привел, есть обращения к буферу строки, на который ссылается xPort, по записи.


 
Anatoly Podgoretsky ©   (2002-04-02 16:20) [4]

Сколько народу ищет ошибку на стороне


 
sniknik ©   (2002-04-02 17:21) [5]

Не выдумываю и не ищу, просил проверить. А вы явно не проверяли. У меня значение xPort меняется, проверял в трассировке, до операции
Port:= xPort;
xPort = "com2"
после "com2# (вместо решетки квадратик скобка не закрыта)
я просто поставил следующей операцией
xPort:= PChar(Port);
и почти забыл об этом а вы так грубо в этом сомневаетесь.

если хотите воспроизвести ситуацию пожалуйста я уже разобрался, изменение происходит в том случае когда передается параметр сам в себя.
вот так, вызов
InitCOMPort(PChar(Port),Baud);
(это когда значения не задаются а берутся те что есть по умолчанию)
может в этом коде и есть какой криминал, я его не вижу. ведь другие значения (пример Baud: integer) нормально сохраняются без изменений.
(то что тип PChar указатель и значения передаются по ссылке можно не напоминать)




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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
3-88755
Ziplex
2002-06-04 13:13
2002.06.27
Ребята как отфильтровать данные в TQuery.


1-88927
vvsystem
2002-06-13 13:47
2002.06.27
Сохранение и загрузка компонентов в/из потока...


14-88991
artgamer
2002-05-20 23:19
2002.06.27
Девушки-геймеры (геймерши? :) и девушки-программистки


3-88730
Explorer
2002-06-03 15:09
2002.06.27
Процедуры в MSSQL 2000


1-88818
lipskiy
2002-06-16 01:17
2002.06.27
Как узнать место в коде, где происходит исключение?