Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
anjey
3 / 3 / 0
Регистрация: 16.01.2008
Сообщений: 359
1

Как увидеть то, что вернула функция WinApi?

14.09.2009, 07:14. Просмотров 937. Ответов 1
Метки нет (Все метки)

например вот такая процедура
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.btnSysDirClick(Sender: TObject);
var
 sysdir:PAnsiChar;
 s:Cardinal;
 res:Integer;
begin
 new(sysdir);
 s:=0;
 res:=GetSystemDirectory(sysdir,s);
// эта строка возвращает реальную длину пути к папке windows
 ShowMessage(IntToStr(res)); 
// а вот эта возвращает что-то вроде ^&&#
 ShowMessage(string(sysdir));
end;
я конечно понимаю, что проблема у меня с преобразованием типов,
но в этом то и весь вопрос ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2009, 07:14
Ответы с готовыми решениями:

функция winApi CreateFileMapping()
Сейчас столкнулся с проблемой. Полное непонимание FileMapping Есть следующий...

Функция winApi WriteFileEx()
Сейчас столкнулся с асинхронными файловыми операциями (I/O). Нашел в сети...

Работа с COM портами WinAPI, конкретно функция ClearCommError
Всем доброго времени суток, я вообще не программист, программирую от случая к...

Какая функция winapi возвращает результатом значение по адресу памяти (указатель)?
Какая функция winapi возвращает результатом значение по адресу памяти...

Как увидеть полный листинг программы
Как увидеть полный листинг программы?

1
Willys
0 / 0 / 1
Регистрация: 20.05.2008
Сообщений: 26
14.09.2009, 11:52 2
у вас есть пара неточностей:
1. GetSystemDirectory возвращает путь не к папке Windows, а к папке WindowsSystem (или System32).
2. оператор New(SysDir) выделяет один(!) байт памяти, над писать SysDir := StrAlloc(размер). только потом не забудьте освободить память функцией StrDispose.
3. при передаче нуля в качестве второго параметра функции GetSystemDirectory, путь не возвращается. возвращается только размер буфера, необходимый для копирования пути. поэтому предложу след. схему:

Res := GetSystemDirectory(nil, 0); // получаем размер
SysDir := StrAlloc(Res + 1); // выделяем память (+ 1 байт для завершающего нуля)
GetSystemDirectory(SysDir, Res + 1); // получаем путь
ShowMessage(SysDir); // выводим результат
StrDispose(SysDir); // освобождаем память
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2009, 11:52

Что и почему дописать в int main() чтобы функция void вернула значение
Что и почему дописать в int main() чтобы функция void вернула значение? ...

Как проверить, вернула ли что-то хранимая процедура?
У меня есть такой вот код: SqlCommand flowsAvailable = new...

Если функция вернула true
$(window).scroll(function () { if($(window).height() +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru