konto usunięte

Temat: Wysyłanie tekstu do notatnika

Witam.

Czy ktoś potrafi przetłumaczyć na Delphi poniższy kod pod C++ Builder?

Oto ten kod:
//---------------------------
#include <vcl.h>
#pragma hdrstop
#include <string.h>

void WyslijTekst(void)
{
char bufor[1024];
strcpy(bufor,"To jest tekst\0");
WinExec("notepad.exe",SW_SHOWNORMAL);
HANDLE okno_notatnika;
okno_notatnika=FindWindow("Notepad",0);
okno_notatnika=GetWindow(okno_notatnika,GW_CHILD);
SendMessage(okno_notatnika,WM_SETTEXT,0,(LPARAM)(LPCTSTR)bufor);
}
//------------------------------------------------------

Jest to kod źródłowy który uruchamia notatnik i wysyła do niego tekst: "To jest tekst" (funkcja działa i w notatniku wyświetli się: To jest tekst ). Jednocześnie jest to przykład dla programistów C++ Builder.
Chciałbym wiedzieć jak to przetłumaczyć na Delphi. Nie jest to mi narazie potrzebne do żadnego projektu, chciałbym tylko poszerzyć swoją wiedzę na temat programowania.

konto usunięte

Temat: Wysyłanie tekstu do notatnika

Dariusz Rorat:
Witam.

Czy ktoś potrafi przetłumaczyć na Delphi poniższy kod pod C++ Builder?

Oto ten kod:
//---------------------------
#include <vcl.h>
#pragma hdrstop
#include <string.h>

void WyslijTekst(void)
{
char bufor[1024];
strcpy(bufor,"To jest tekst\0");
WinExec("notepad.exe",SW_SHOWNORMAL);
HANDLE okno_notatnika;
okno_notatnika=FindWindow("Notepad",0);
okno_notatnika=GetWindow(okno_notatnika,GW_CHILD);
SendMessage(okno_notatnika,WM_SETTEXT,0,(LPARAM)(LPCTSTR)bufor);
}
//------------------------------------------------------

Jest to kod źródłowy który uruchamia notatnik i wysyła do niego tekst: "To jest tekst" (funkcja działa i w notatniku wyświetli się: To jest tekst ). Jednocześnie jest to przykład dla programistów C++ Builder.
Chciałbym wiedzieć jak to przetłumaczyć na Delphi. Nie jest to mi narazie potrzebne do żadnego projektu, chciałbym tylko poszerzyć swoją wiedzę na temat programowania.

Którego fragmentu nie rozumiesz? Jedyna funkcja, której nie ma w Delphi to strcpy (w Delphi AFAIR wystarczy przypisać łańcuch lub skorzystać z Copy, ale chyba źle pamiętam ;-). Reszta to wywołania funkcji systemowych, które też są zdefiniowane w Delphi (Windows.pas, Messages.pas, ...). Niezrozumiałe jeszcze może być "(LPARAM)(LPCTSTR)", ale znając parametry (np z msdn, WinAPI.hlp) SendMessage wiemy, że łańcucha nie możemy tam bezpośrednio przekazać, więc zapewne jest to... wskaźnik ;-)

konto usunięte

Temat: Wysyłanie tekstu do notatnika

specjalnie dla ciebie! wersja w assemblerze pod MASM :)


WyslijTekst proc uses esi edi ebx

local bufor[1024]:byte

lea ecx,bufor

call @f
db 'To jest tekst',0
@@:
pop edx

@@: mov al,byte ptr[edx]
inc edx
mov byte ptr[ecx],al
inc ecx
cmp al,0
jne @b

push SW_SHOWNORMAL
call @f
db 'notepad.exe',0
@@:
call WinExec

push 0
call @f
db 'Notepad',0
@@:
call FindWindowA

push GW_CHILD
push eax
call GetWindow

lea eax,bufor
push eax
push 0
push WM_SETTEXT
push eax
call SendMessageA

ret

WyslijTekst endp


nie musisz dziekowac.Bartosz Wójcik edytował(a) ten post dnia 10.11.09 o godzinie 03:54

konto usunięte

Temat: Wysyłanie tekstu do notatnika

Nie wiem z jakimi parametrami wywołać funkcje: FindWindow, GetWindow i SendMessage (są odpowiedniki w Delphi dla funkcji w C++ Builder ale tam inaczej używa się parametrów). O ile notatnik można łatwo wywołać to miałem problemy z tymi trzema funkcjami.
Piotr M.

Piotr M. programista

Temat: Wysyłanie tekstu do notatnika

Czy był jakiś problem ze znalezieniem rozwiązania w Googlach, Panie magistrze inżynierze?

http://www.google.pl/search?hl=pl&safe=off&rls=pl&hs=b...

konto usunięte

Temat: Wysyłanie tekstu do notatnika

Rzeczywiście pewne kody źródłowe można łatwo znaleźć przez Google.
Znalazłem kod źródłowy pod tym adresem:

http://www.swissdelphicenter.ch/torry/showcode.php?id=456

Dziękuję za podpowiedź. Pozdrawiam.

konto usunięte

Temat: Wysyłanie tekstu do notatnika

Bartosz Wójcik:
(...)
push SW_SHOWNORMAL
call @f
db 'notepad.exe',0
@@:
call WinExec

Niezły trik z tym przekazywaniem parametrów... Już chciałem wytknąć pomyłkę, ale wiedziałem, że bartowi raczej taki błąd by się nie zdarzył. ;-)



Wyślij zaproszenie do