Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127

Нужно перенести код с Delphi в С++

05.07.2010, 16:55. Показов 1937. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, вот нашел пример запуска винампа для дельфи:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Запуск Winamp’а
Procedure StartWinamp;
var
WinampExe:string;
begin
reg := TRegistry.create;
reg.RootKey:=Windows.HKEY_LOCAL_MACHINE;
reg.OpenKey('Software\CLASSES\Winamp.File\shell\open\command', False);
WinampExe := reg.ReadString('');
reg.Free;
if WinampExe<>'' then
begin
WinampExe:=copy(WinampExe, 2, length(WinampExe)-7);
WinExec(pchar(WinampExe), SW_SHOWNORMAL);
end;
end;
Теперь мне нужно его перенести на C++ builder, вот что я сделал:
C++
1
2
3
4
5
6
    AnsiString WinampEXE;
    TRegistry *reg = new TRegistry(KEY_ALL_ACCESS);
    reg->RootKey = HKEY_LOCAL_MACHINE;
    reg->OpenKey("Software\CLASSES\Winamp.File\shell\open\command", False);
    WinampEXE = reg->ReadString("");
    reg->Free();
Вобщем я не знаю как на C++ записать вот эти строчки:
Delphi
1
2
WinampExe:=copy(WinampExe, 2, length(WinampExe)-7);
WinExec(pchar(WinampExe), SW_SHOWNORMAL);
Помогите мне плиз.
Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2010, 16:55
Ответы с готовыми решениями:

Перенести код считывания wav-файла на Delphi.
Вот сам код: typedef struct { char id_riff; long len_riff; char id_chuck; char fmt; long len_chuck;

Нужно преобразовать код с Delphi на С++
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids,...

Нужно переделать код с Delphi и С++
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Math,...

6
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
05.07.2010, 17:08
Цитата Сообщение от Br.Misha Посмотреть сообщение
Delphi
1
WinExec(pchar(WinampExe), SW_SHOWNORMAL);
Выглядеть это будет примерно так:
C++
1
2
WinampEXE.SubString(2,WinampEXE.Length()-7);
WinExec(WinampEXE.t_str(), SW_SHOWNORMAL);
Метод t_str() зависит от версии билдера. В вашем случае, возможно использовании c_str()
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
05.07.2010, 18:10
Цитата Сообщение от Br.Misha Посмотреть сообщение
reg->OpenKey("Software\CLASSES\Winamp.File\s hell\open\command", False);
Даже если работает, обратный слеш надо \\.
Цитата Сообщение от Standard
If the character following a backslash is not one of those specified, the behavior is undefined.
Цитата Сообщение от M$
If a backslash precedes a character that does not appear in the table, the compiler handles the undefined character as the character itself. For example, \c is treated as an c.
0
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
05.07.2010, 18:22  [ТС]
Код компилиться, но, к сожалению, винамп не запускаеться((((.
Вот так я его хочу запустить:
C++
1
2
3
4
5
6
7
8
9
    AnsiString WinampEXE;
    TRegistry *reg = new TRegistry;
    reg->RootKey = HKEY_LOCAL_MACHINE;
    reg->OpenKey("Software/CLASSES/Winamp.File/shell/open/command", False);
    WinampEXE = reg->ReadString("");
    reg->Free();
        if (WinampEXE!="") ShowMessage("1"); else ShowMessage("0");
    WinampEXE.SubString(2,WinampEXE.Length()-7);
    WinExec(WinampEXE.c_str(), SW_SHOWNORMAL);
Для отладки я вставил сюда if (WinampEXE!="") ShowMessage("1"); else ShowMessage("0"); и оно мне постоянно возвращает 0, поэтому ошибка дето перед этой строкой.
В коде на дельфи написано reg.RootKey:=Windows.HKEY_LOCAL_MACHINE; а в С++
C++
1
reg->RootKey = HKEY_LOCAL_MACHINE;
Тоесть без Windows., мож ошибка де то тут?

Добавлено через 1 минуту
ЗЫ: пробовал ставить обратный слеш
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
05.07.2010, 18:56
Br.Misha,
C++
1
2
3
4
5
6
7
8
AnsiString WinampEXE;
TRegistry *reg = new TRegistry(KEY_ALL_ACCESS);
reg->RootKey = HKEY_LOCAL_MACHINE;
reg->OpenKey("Software\\CLASSES\\Winamp.File\\shell\\open\\command", False);
WinampEXE = reg->ReadString("");
ShowMessage(WinampEXE);
delete reg;
reg = NULL;
Выполните этот код! Что у вас будет в переменной WinampEXE?
0
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
05.07.2010, 19:10  [ТС]
MikeSoft, в переменной появился адрес ЕХЕшника винампа!!!!
Проблема решена! MikeSoft, ОГРОМНОЕ Вам спасибо!)))))))))))

Добавлено через 2 минуты
Упс, одна проблемка:
В конце, после адресса ЕХЕшника еще есть "%1", как его убрать?

Добавлено через 6 минут
добавил WinampEXE = WinampEXE.SubString(2,WinampEXE.Length()-7); - проблема решилась!
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
05.07.2010, 19:11
Br.Misha, вот вам пример нахождения индекса позиции и обрезки лишнего:
C++
1
2
3
4
AnsiString WinampEXE = "test %1";
int pos = WinampEXE.Pos("%1");
WinampEXE.Delete(pos,strlen("%1"));
ShowMessage(WinampEXE);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2010, 19:11
Помогаю со студенческими работами здесь

нужно переделать код c Delphi на С++builder
Помогите пожалуйста переделать код Delphi на С++builder. Программа поиска файлов на диске Вот код: // поиск файла в указанном каталоге...

Нужно переписать код из Delphi в C++ Builder
Очень нужна ваша помощь и понимание... Задача: Разработать программу, которая читает файл, содержащий текст на русском языке,...

Нужно перевести код с Delphi на C++ Builder
unit frmPostfix; interface uses Windows, SysUtils, Classes, Controls, Forms, Contnrs, StdCtrls, Math; type ...

Нужно переделать код из Delphi в С++ Bilder
Помогите переделать программу на С++ Bilder ---------ВОТ КОД.----------- { Игра &quot;Парные картинки&quot;} unit Unit1; interface...

Перенести код из VC++ в CPP Builder (код использует DLL)
Такая проблема. Есть DLL + пример её использования на Visual C++, пытаюсь этот пример перенести в Builder. Проблемы возникают в самом...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru