Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
1-88929
Korona
2002-06-14 20:26
2002.06.27
TForm1.Create(Screen)


14-88994
MaximatorVeter
2002-05-23 18:10
2002.06.27
Программист и девушка!!!


1-88875
sasa2001
2002-06-14 10:19
2002.06.27
Как проверить зарег-ан ли в системе midas.dll и если нет сделать


1-88824
Валет
2002-06-17 08:42
2002.06.27
Несколько вопросов по завершению работы ПК


8-88963
Pete
2002-02-18 15:34
2002.06.27
Помогите реализовать...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский