Вопрос по С++

daoway

кот Шрёдингера
Re: Компилятор С

А что может помешать играться с win api? Не вижу помех если честно. Подключаются библиотеки и всё. Если он может собирать машинный код под Винду, что мешает вызывать эти функции.. Плюс уход на уровень прерываний никто не отменял.
Не, ну гвозди и посатижами забивать можно, хватило бы дури )
 

GrAndSE

Тёмный
Модератор
Re: Компилятор С

Не, ну гвозди и посатижами забивать можно, хватило бы дури )
Ну касательно ухода на уровень прерываний так это конечно горяча - Винда быстрее работать не начнёт, а упасть с перепугу может :)
А вот касательно того, что были бы хеадеры, изнать где библиотеки лежат под соответствующие апи, так можно прописать и при компиляции -l и всё доолжно быть впордяке по логике вещей.
Хотя сказать, что это самый простой компилятор, так сразу и не скажешь, если использовать msn gcc :). А на деле всё очень просто. ;)
 

setty

Граф
Re: Компилятор С

VC++ 6.0 ИМХО, хотя учитывая суть вопроса смею предположить что для подобного уровня сойдёт почти ЛЮБОЙ!
 

setty

Граф
примитив С++

имеется такой вот кусочек кода (к примеру)
Код:
char ссс[16]={0xE8,[COLOR="Red"]0,0,0,0[/COLOR],0x58,04,0x12,0x50,0xFF,0x15,0,0,0,0,0xC3};
int i=(int)GetModuleHandle("boo.dll");
вопрос в том как затолкать значение из i в ту часть переменной ссс которая выделена красным. Другими словами у меня есть 16 байт в памяти, и начиная со второго в 4 из них нужно положить значение из переменной любого типа который тоже весит 4 байта (int, HANDLE, DWORD...)
 

Sober

______________
Re: примитив С++

Так например:
Код:
char ссс[16]={0xE8,0,0,0,0,0x58,04,0x12,0x50,0xFF,0x15,0,0,0,0,0xC3},*pi;
int i=(int)GetModuleHandle("boo.dll");
pi=(char *)&i;
for(char k=1;k<5;k++)
ccc[k]=*(pi++);
 

quant

yeah
вот написал алгоритм замены в файле одной строки на другую
Код:
[COLOR="Blue"]#include[/COLOR] [COLOR="Sienna"]<stdio.h>[/COLOR]
[COLOR="Blue"]int[/COLOR] main() {
	_iobuf *in, *ou;
	in = fopen ([COLOR="Sienna"]"index.htm"[/COLOR], [COLOR="Sienna"]"r"[/COLOR]);
	ou = fopen ([COLOR="Sienna"]"new.index.htm"[/COLOR], [COLOR="Sienna"]"w"[/COLOR]);
	[COLOR="Blue"]const char[/COLOR] math[]={[COLOR="Sienna"]"ktv"[/COLOR]}, zamena[]=([COLOR="Sienna"]"vip"[/COLOR]);
	[COLOR="Blue"]char[/COLOR] l;
	[COLOR="Blue"]int[/COLOR] counter = 0, cc = 0, leng = [COLOR="Blue"]sizeof[/COLOR](math) - 1, zleng = [COLOR="Blue"]sizeof[/COLOR] (zamena) - 1, j;
	[COLOR="Blue"]do[/COLOR] {
		counter++;
		l = fgetc (in);
		[COLOR="Blue"]if[/COLOR] (math[cc] == l) {
			cc++;
			[COLOR="Blue"]if[/COLOR] (cc == leng) {
				j = 0;
				[COLOR="Blue"]do[/COLOR] {
					fputc (zamena[j++], ou);
				} [COLOR="Blue"]while[/COLOR] (j != zleng);
				cc = 0;
			};
		} [COLOR="Blue"]else[/COLOR] {
			[COLOR="Blue"]if[/COLOR] (cc != 0) {
				j = 0;
				[COLOR="Blue"]do[/COLOR] {
					fputc (math[j++], ou);
				} [COLOR="Blue"]while[/COLOR] (j != cc);
				cc = 0;
			};
			fputc (l, ou);
		};
	} [COLOR="Blue"]while[/COLOR] (!feof(in));
	fclose (in);
	fclose (ou);
	[COLOR="Blue"]return[/COLOR] 0;
}
он меня может спасти от однородной правки 5000 страничек )
всё крута работает НО выходящий файл в блокноте пустой, хотя браузер его норм открывает с правкой
я думаю дело в том, что входящий файл в кодировке UTF-8, хотя все сайты на латинице
подскажите, пожалуйста, как можно исправить ситуацию
 
Останнє редагування:

quant

yeah
quant сказав(ла):
я думаю дело в том, что входящий файл в кодировке UTF-8, хотя все сайты на латинице
замена char на wchar_t не помогла - тоже самое
смотрел в wath window считывается в wchar_t бред и этот же бред записывается в выходящий файл, хотя мазила всё норм читает - блокнот мажется и файл открывает как пустой
наверное он открывает файл с кодировкой UTF-8 как файл c другой кодировкой
грррр как в C++ поставить в атрибутах исходящего файла, что он написан в кодировке юникода??
 

setty

Граф
имхо это не проблемма твоей программы а проблема блокнота, гдето слышал что у него есть бага в работе с юникодом. скачай к нему патч )
 

GrAndSE

Тёмный
Модератор
замена char на wchar_t не помогла - тоже самое
смотрел в wath window считывается в wchar_t бред и этот же бред записывается в выходящий файл, хотя мазила всё норм читает - блокнот мажется и файл открывает как пустой
наверное он открывает файл с кодировкой UTF-8 как файл c другой кодировкой
грррр как в C++ поставить в атрибутах исходящего файла, что он написан в кодировке юникода??
У меня ест ьподзрение такое гадкое, что твоя программа работает, а выполнять ничего н евыполняет.
А какой оболочкой (я так понимаю "wath window" из ниоткуда не берется, особенно для откомпилированых исходников :)) было всё это дело просмотрено?
А касательно блокнота, то попробуй просмотреть результат с помощью, например, "едитора" встроенного в Тотал - эта штку с кодировками дружит на ура.
 

setty

Граф
Листинг кванта компилится и отлично работает (VS6). Единственное - я б посоветовал проверять результат выполнения
in = fopen ("index.htm", "r");
потому как если файла не существует то он не создастся как при
ou = fopen ("new.index.htm", "w");
в резуьтате имеем конфуз при попытке читать из in:
l = fgetc (in);

вот ссыль на проблемму блокнота с юникодом
 
Останнє редагування:
Зверху