Главная страница
    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
14-89010
antistatic
2002-05-25 20:57
2002.06.27
Какого хрена мои ветки удаляются???


1-88795
Demon-777
2002-06-16 00:15
2002.06.27
PopupMenu


1-88936
mazepa
2002-06-15 15:39
2002.06.27
Объем Huge String


3-88714
First_May
2002-06-03 15:11
2002.06.27
D5 + Excel


14-89015
SPeller
2002-05-26 15:27
2002.06.27
Описание объектов JavaScript





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