Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Элементарные основы кодинга (https://forum.antichat.xyz/showthread.php?t=51199)

NeXArmAor 13.10.2007 09:52

Нид хелп,сейчас мучаю одно творение,и возникла одна "маленькая проблема",дело в том что при использовании функции lstrcat возникает некоторые лаги,эта функция соединяет два буфера в один,но происходит мерзостная бага когда ее используеш часто. Т.е допустим нужно соединить C:\WINDOWS с regedit.exe. На первый раз все клеит удачно,но потом возникает необходимость еще одного комбинирования,типа dir с C:\WINDOWS\regedit.exe и тут повляется своеобразный мусор,типа "dir C:\WINDOW\regedit.exe :7: 444353" откуда берутся эти символы не понятно. В чем проблема? Сорри,если вопрос ламо...реально надо понять в чем проблема. Надо как то очищать буфер?

Ky3bMu4 13.10.2007 13:20

1)На конце regedit.exe поставь мой любимый разделитель("_") , а потом начиная с конца конца закидай буффер нулями.
2)Сначала "склей" dir и C:\\... , а потом regedit.exe
3)Юзай wsprintf . Это найлучший и надёжнейший метод.

NeXArmAor 13.10.2007 13:37

Ky3bMu4,thx...примерчик подкинь с wsprintf плз. Если знаеш

Ky3bMu4 13.10.2007 13:55

Примерно так:
Код:

....................
.const
xz db '%s%s',0
st1 db 'dir',0
st2 db 'C:\\',0
...................
.code
Main PROC
LOCAL st3:BYTE ; склееная строка будет здесь
invoke wsprintf , st3 , xz , st1 , st2
.....................


Ni0x 13.10.2007 14:24

Ky3bMu4, автограф дашь? Честное слово, таких мастеров еще не видел. Особенно понравился твой код. Верх программерского мышления! Он наверное outpost обходит, путем вызова исключения, я угадал?
NeXArmAor, msdn говорит чтонибудь? Прочитал бы для начала про lstrcat, там вроде ясно написано, что строка должна закнчиваться '\0', но читать справку не модно, понимаю.
Цитата:


LPTSTR lstrcat(
LPTSTR lpString1,
LPTSTR lpString2
);

Parameters
lpString1
[in, out] Pointer to a null-terminated string. The buffer must be large enough to contain both strings.
lpString2
[in] Pointer to the null-terminated string to be appended to the string specified in the lpString1 parameter.
С wsprintf таже ситуация, ну конечно тебе нужен пример, ведь без примера ты ничего не поймешь. Если я не ошибаюсь, ты автор N-Joiner Asm Version, тогда вопрос, у кого ты украл исходники, если не знаешь таких элементарных вещей?

NeXArmAor 13.10.2007 14:31

NiOx, не остри плз. Я автор N-Joy и я не крал исходники ни у кого. А на счет справки ты прав,я ее не читал. Ну я конечно понимаю,ты гуру ассемблера,для тебя все элементарно,но уж извини не дошел я до такого ранга еще.

Ni0x 13.10.2007 14:52

Начнем с того, что я не считаю себя гуру ассемблера и насчет ранга я не понял. Какое отношение lstrcat имеет к ассемблеру? То что ты не знаешь банальных вещей про нулевой символ и при этом пишешь джоинер - это нонсенс я считаю. Удачи.

NeXArmAor 13.10.2007 14:57

NiOx, а для того чтобы написать джойнер совсем не обязательно знать про нулевой символ.

inv 13.10.2007 15:04

Ni0x да ладно тебе)я видел похлеще....))))
Большинство здесь решают какие-то определенные задачи ,они не изучают язык...но это опять же их право,а то что после написания джойнера они не стесняются задавать такие вопросы...ну хз.

_Great_ 13.10.2007 18:33

Цитата:

Сообщение от NeXArmAor
NiOx, а для того чтобы написать джойнер совсем не обязательно знать про нулевой символ.

Ну да, вероятно для того, чтобы написать ОС, совсем не обязательно знать устройство компьютера и процессора в частности. Достаточно лишь покидать понтов, натырить у всех кода и скзать - смотрите, какой я крутой, я написал это сам!

Цитата:

Сообщение от Ky3bMu4
1)На конце regedit.exe поставь мой любимый разделитель("_") , а потом начиная с конца конца закидай буффер нулями.
2)Сначала "склей" dir и C:\\... , а потом regedit.exe
3)Юзай wsprintf . Это найлучший и надёжнейший метод.

Со своим любимым разделителем и такими советами знаешь куда тебе надо?


Время: 11:37