Wstawka do batcha

DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Witam. Chciałbym zrobić wkładkę do batcha, ale nie wiem jak wyświetlić coś w batchu, tak abym mógł to odczytać funkcją errorlevel. Przykładowo:

Kopiuj
 
Var
 a:string;
Begin
 a:=plyplyply;
end.
Kopiuj
@echo off
nazwaprogramu.exe
echo %errorlevel%

Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
MA
  • Rejestracja:prawie 17 lat
  • Ostatnio:13 dni
1

EXE:

Kopiuj
Program NazwaProgramu;
Var
 a:string;
Begin
  a:=plyplyply;
  //domyślnie ExitCode:=0;
  If JakisWarunek1 then ExitCode:=1;
  If JakisBlad1 then ExitCode:=2;
end.

BAT:

Kopiuj
@echo off
NazwaProgramu.exe
echo %errorlevel% //errorlevel=1 jeśli w programie NazwaProgramu.exe był spełniony warunek JakisWarunek1
                 //errorlevel=2 jeśli w programie NazwaProgramu.exe wystąpił błąd JakisBlad1
                 //domyślnie errorlevel = 0
DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Dziękuję, ale jak wyświetlić zmienną typu string? Albo jakiś tekst?


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
pelsta
  • Rejestracja:około 19 lat
  • Ostatnio:25 dni
  • Postów:819
0

Może tekst zapisać do pliku a w batchu wyświetlić plik poleceniem Type

DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Chciałem zrobić coś w stylu sterownika keyboard. Program czeka na naciśnięcie klawisza a następnie zwraca wartość do errorlevel. Wiem jak to zrobić, tylko chodzi mi właśnie o zwracanie tej wartości.


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Wiem że nie minęło 24 godziny, ale pół godziny szybciej robię refresz.


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
0
DarkSlayer napisał(a):

Wiem że nie minęło 24 godziny, ale pół godziny szybciej robię refresz.

Dostałeś odpowiedź, tylko jesteś zbyt głupi żeby ją zrozumieć. Próbujesz wymyślić koło od nowa.

DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Chodzi o odpowiedź Pelsty czy Xitama? Bo nie chodziło mi o odpowiedź Pelsty a od Xitama nie znalazłem nic o tym, same komendy dosa. Chodziło mi o to aby zrobić coś podobnego do keyboard.exe w batchu.

Kopiuj
@echo off
keyboard
echo %errorlevel%

Czeka na naciśnięcie przycisku i zwraca jego wartość w ansi. A jak zrobić aby w Pascalu wyświetlić tekst, bo cyfry napisał kolega wcześniej.


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
1
DarkSlayer napisał(a):

Czeka na naciśnięcie przycisku i zwraca jego wartość w ansi. A jak zrobić aby w Pascalu wyświetlić tekst, bo cyfry napisał kolega wcześniej.

1.Zaakceptowałeś już odpowiedź. Czyli problem rozwiązany, czyż nie? Nie umiesz pytać to i masz problem żeby zaakceptować odpowiedź.
2. Nie posiadasz TBrain i nie potrafisz powiązać faktów. Tobie trzeba dać kod, bo inaczej będziesz bumpować i czekać na gotowca, a na wszelkie odpowiedzi będziesz patrzeć tak: Nie ma gotowca? To na co mi to.
Czekaj sobie na kogoś kto ci pomoże w twojej głupocie. Ja się pod tym nie piszę.

olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
2

@DarkSlayer: przepraszam, ale czy jesteś w jakiś sposób ograniczony? Nie rozumiesz słowa pisanego czy coś w tym stylu? Przecież @marogo dał Tobie jasną odpowiedź. Jaki problem aby ExitCode wynosiło Ord(Znak)?


Pozdrawiam.
DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Łatwiej by było jakby dawało znak, ale na to co napisałeś olesio wpadłem wcześniej. Troszkę się męczyłem bo zamiast Orb to pisałem char/chr. Dzięki wam gra i buczy :P Podzielę się kodem jaki "zrobiłem".

Kopiuj
uses Crt;
begin
 if keypressed then exitcode:=ord(readkey);
end.

Jeżeli wciśnięty guzik to zwraca jego wartość. Może komuś bawiącego się w batchu przyda się(np. w jakimś scroolu czy filmiku).


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
edytowany 2x, ostatnio: DarkSlayer
Patryk27
"=true" nie jest potrzebne...
pelsta
  • Rejestracja:około 19 lat
  • Ostatnio:25 dni
  • Postów:819
1

Z tego co pamiętam, to po wciśnięciu klawisza funkcyjnego, ReadKey zwraca #0 a właściwy kod klawisza odczyta się kolejnym wywołaniem ReadKey. Pewnie dotyczy to również jakichś innych klawiszy nie-alfanumerycznych.

DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

O wielkie dzięki, teraz próbuję pisać grę i musiałem wykorzystać wsad bo strzałki nie działały.


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
olesio
Heh - pisać grę w batchu wspierając się zewnętrznym programem w FPC? To już lepiej całośc napisać w FPC, a będzie prościej, więcej możliwości i nikt w prosty sposób nie podejrzy oraz nie wyedytuje zawartości batcha "psując" grę ;/
0

Heh - pisać grę w batchu wspierając się zewnętrznym programem w FPC? To już lepiej całośc napisać w FPC, a będzie prościej, więcej możliwości

True. Batch służy do tworzenia skryptów do kompilacji gier, nie do tworzenia gier.

i nikt w prosty sposób nie podejrzy oraz nie wyedytuje zawartości batcha "psując" grę ;/

Tja, bo w notatniku nie otworzy? IDA i jedziemy... Dziwi mnie to przekonania o 'nienaruszalności' plików PE. To że trzeba mieć lepsze narzędzie jeszcze nie znaczy że nawet bez jakiejś dużej wiedzy można zmodyfikować (kursów w necie masa).

olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0
-123oho napisał(a)

Tja, bo w notatniku nie otworzy? IDA i jedziemy... Dziwi mnie to przekonania o 'nienaruszalności' plików PE. To że trzeba mieć lepsze narzędzie jeszcze nie znaczy że nawet bez jakiejś dużej wiedzy można zmodyfikować (kursów w necie masa).

Toć ja nie twierdzę, że nie można użyć zewnętrznych narzędzi. Ale pospolita tak zwana lama (a takich pełno niestety, a może i stety) w exeku grzebać raczej nie będzie. A na swoim blogu w jednym z wpisów pokazałem, że nie protectnięty exek Delphi VCL równie szybko idziej zmodyfikowac posiłkując się IDR, co grzebiąc bezpośrednio w źródłach. To samo inne exeki Windowsowe pod chociażby IDA bardzo łątwo można analizować, co pokazałem na przykładzie ConEmu. Podsumowując: wszystko da się zrobić, jeżeli tylko wiemy co robimy i robimy to z głową. Chodzi o to, że otwierając exek w zwykłym notatniku za wiele nie zobaczymy, a otwierając batcha już tak.


Pozdrawiam.
DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Batch to język skryptowy, ale ja go nazywam open sourcowy :P Jak byłem na pewnym forum to się nim bawiłem, ale mnie zbanowali za zmienienie każdego posta na "A ten tego :P". A to teraz to było tylko tak dla testów.


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
Patryk27
Masz pojęcie co piszesz czy tylko wyklepujesz losowe słowa na klawiaturze?
0
olesio napisał(a):

Toć ja nie twierdzę, że nie można użyć zewnętrznych narzędzi. Ale pospolita tak zwana lama (a takich pełno niestety, a może i stety) w exeku grzebać raczej nie będzie. A na swoim blogu w jednym z wpisów pokazałem, że nie protectnięty exek Delphi VCL równie szybko idziej zmodyfikowac posiłkując się IDR, co grzebiąc bezpośrednio w źródłach. To samo inne exeki Windowsowe pod chociażby IDA bardzo łątwo można analizować, co pokazałem na przykładzie ConEmu. Podsumowując: wszystko da się zrobić, jeżeli tylko wiemy co robimy i robimy to z głową. Chodzi o to, że otwierając exek w zwykłym notatniku za wiele nie zobaczymy, a otwierając batcha już tak.

I co taka lama zrobi z batchem? Zmieni zawartość na wirusa?
Ani jedno ani drugie jakieś trudne specjalnie nie jest, kwestia determinacji i wiedzy. Ale nieprotectowanego EXE jeszcze bym nie traktował w kwestii dobrze zabezpieczone :P

Btw. Nie wiedziałem że masz blog . Will take a look on ur malware later on.

Batch to język skryptowy, ale ja go nazywam open sourcowy

Powtórz: Interpretowany

Jak byłem na pewnym forum to się nim bawiłem, ale mnie zbanowali za zmienienie każdego posta

Żeś się pochwalił.

KA
I po co robisz ten offtop? Kogo obchodzi twoja "wiedza" na temat reverse engineeringu? To że widziałeś Syser, OllyDbg, IDA czy starsze zabytki jak SoftICE i w32Dasm umiesz użyć Hiew i pisałeś programy w asm pod debug nie czyni z ciebie crackersa.
DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0

Witam. Ponownie mam problem. W free pascalu działa ExitCode:=1; ale w turbo pascalu już nie. Można to jakoś obejść? Używanie free pascala odpada gdyż nie działa tam mysz.


Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
0

Witam. Ponownie mam problem. W free pascalu działa ExitCode:=1; ale w turbo pascalu już nie. Można to jakoś obejść? Używanie free pascala odpada gdyż nie działa tam mysz.

A czemu nie zrobisz nowego tematu? Bo ten się nazywa "Wszystkie pytania od DarkSlayera"?? Następnym razem ogar tworzenie tematów.
Używasz DOSa? Jeżeli to Windows to mam dla ciebie dobrą wiadomość: Jest FPC pod Windows, nawet jest śliśtaśne GUI: Lazarus.

I po co robisz ten offtop? Kogo obchodzi twoja "wiedza" na temat reverse engineeringu?

Ciebie skoro odpisujesz.

To że widziałeś Syser, OllyDbg, IDA czy starsze zabytki jak SoftICE i w32Dasm umiesz użyć Hiew i pisałeś programy w asm pod debug nie czyni z ciebie crackersa.

Nie twierdzę że jestem pr0, po prostu złamałem parę prostych zabezpieczeń i piszę swoje. Więc to czy jestem crackersem zależy od twojej definicji. Zresztą, podobno ciebie to nie obchodzi?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Ponownie mam problem. W free pascalu działa ExitCode:=1; ale w turbo pascalu już nie. Można to jakoś obejść? Używanie free pascala odpada gdyż nie działa tam mysz.

Piszesz pod 128 MHz komputery z DOS'em, że używasz jeszcze Turbo Pascala?
Jestem pewien, że FPC obsługuje wszystko, co Turbo Pascal - wystarczy poszukać.


flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
0

Poszukałem za Ciebie... Masz tu kilka linków odnośnie FPC i myszki:

Czytaj, czytaj, czytaj...


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Najlepiej pobierz moduł WinGraph.
Masz w zestawie WinGraph do grafiki, WinCRT do wczytywania tekstu etc. oraz WinMouse do obsługi myszki.
Czasami także z niego korzystam, jak potrzebuję coś zrobić, a i więcej możliwości w porównaniu do zwykłego unitu Graph.


flowCRANE
Korzystałeś kiedyś z modułu "Mouse" w FPC?
Patryk27
Prawdę mówiąc, nie; ale z tego co przeczytałem, funkcjonalność ma podobną do WinMouse (spojrzałem ogólnikowo na listę funkcji).
DS
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
  • Postów:32
0
``` Uses Mouse,CRT; Var Butt,MX,MY:Word; Begin InitMouse; ShowMouse; Butt:=GetMouseButtons; MX:=GetMouseX; MY:=GetMouseY; ExitCode:=MX; Delay(1000); End. ``` Ten kod po uruchomieniu powinien zwracać wartość x myszki do konsoli ale zwraca zero, wie ktoś dlaczego? A dopisałem się do tego tematu bo chodzi o exitcode. Teraz mam kolejny problem. Jak połączyć zmienne MX i MY w jedną? Np. MX ma wartość 1 a MY 2, jak zrobić aby A miała 12?

Mam dysortografię i dysgrafię więc może się zdarzyć że coś źle napiszę lub się nie rozczytacie.
edytowany 1x, ostatnio: DarkSlayer
Patryk27
Nie jest to powodem błędu, ale masz memleak w kodzie. Zgodnie z dokumentacją: "A call to InitMouse must always be followed by a call to DoneMouse at program exit. Failing to do so may leave the mouse in an unusable state, or may result in memory leaks."
DS
DoneMouse nic nie zmieniło.
KA
Spróbuj halt(MX);
DS
Rozwiązane, pomogło delay.
DS
kAzek jak ja pisałem że rozwiązane, to twojego komentarza nie było.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Teraz mam kolejny problem. Jak połączyć zmienne MX i MY w jedną? Np. MX ma wartość 1 a MY 2, jak zrobić aby A miała 12?

Kopiuj
10 = 1*10 + 0*1
12 = 1*10 + 2*1
1024 = 1*1000 + 0*100 + 2*10 + 4*1

lub, skoro są to zmienne typu word:
zmienna_typu_integer = mx << 16 | my
w Pascalu to będzie: zmienna_typu_integer := (mx shl 16) or my.
W tym wypadku pierwsze 16 bitów to będzie zmienna mx, a następne to my.


edytowany 4x, ostatnio: Patryk27
flowCRANE
@Patryk27 - chodzi o kod w Pascal'u... :P
Patryk27
"<<" wygląda fajniej :P
Patryk27
Nawet nie wiem czy dobrze napisałem wersję w Pascalu :P Przystosowałem się z FPC do używania "<<" oraz ">>" jako operatorów...
flowCRANE
Według mnie dobrze (razem z nawiasami);
1

Teraz mam kolejny problem. Jak połączyć zmienne MX i MY w jedną? Np. MX ma wartość 1 a MY 2, jak zrobić aby A miała 12?

Czy to jest forum czy jakiś czat gdzie wyskakujesz z pytaniami co parę godzin? Naucz się rozwiązywać problemy a nie pytać na forum.

DS
Pytać każdy może. A Ci co nie chcą odpowiadać przecież nie muszą.
flowCRANE
Mogłeś napisac nowy post, a nie przekreślać starej treści - teraz to trochę głupkowato wygląda... :>

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.