Sida 1 av 2
Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 4 juni 2010, 10:37:05
av vfr
Jag letar efter en komponent till Borland C++ Builder eller Delphi som implementerar en Windows kommandorad.
Bakgrunden är att jag har en applikation som går i Win kommandorad men som jag skulle vilja lägga ett "skal" runt med hjälpfunktioner. Tänk en debugger, liknande gdb t.ex, som går i textmode. Sedan vill man ha lite funktioner för t.ex bootloader och annat som ligger lite närmare till hands och bättre knutet till kommandoraden än det gör idag.
Idag körs allting sådant från separata applikationer. Men det blir mycket hoppande mellan applikationerna. Sedan kan t.ex bootloadern inte automatisk starta debuggern på ett enkelt sätt. Eller att automatisk detektera när en ny hexfil finns tillgänglig efter kompilering, liknande PICKIT2, och då stänga debuggern och automatiskt starta en laddning och därefter starta debuggern igen.
En del av detta skulle naturligtvis kunna göras med scripting, men jag tror att det hade varit både enklare och snyggare att få till en bra funktion med en riktig applikation. Bootloadern är redan idag en egen fönsterapplikation och det handlar egentligen om att bygga in ett kommandofönster i den som man styra lite som man vill. Starta & stoppa kommandoraden och kanske skicka in något kommando till den. Debuggern kan jag inte påverka ö.h.t då det är en köpt applikation som inte ens finns längre idag. Tyvärr är jag bunden till den ett tag till innan det finns en ersättare.
Applikationen som sådan fixar jag nog ihop, om jag bara kan hitta en bra komponent som tillåter att jag gör lite såna saker.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 4 juni 2010, 13:31:47
av baron3d
Det borde väl gå att skriva en egen kommandotolk.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 4 juni 2010, 17:29:44
av vfr
Absolut enklaste möjliga som bara exekverar kommandon rakt av är nog inga problem. Skall man däremot ha med lite mer avancerade grejor som videomoder, miljövariabler etc, så är det nog inget man slänger ihop på en kafferast. Man måste t.ex tolka Ansi-kommandon och liknande för videooutput. Så det enklaste hade helt klart varit en färdig komponent. Alternativt om någon redan skrivit en egen kommandotolk med dom bells & jingles som behövs.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 4 juni 2010, 17:44:24
av mri
Jag fattar inte riktigt vad du vill ha och varför....
Ett fullständigt texmode shell-fönster var du dessutom integrerar dina egna "kommandon" i, eller vad?
Isåfall finns väl opensource shells som portats till windows, som kanske kunde användas.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 4 juni 2010, 19:10:52
av vfr
Inga egna kommandon alls. Det är inte det som är poängen. Det är bara debuggern som skall köras i "boxen", inget annat. Tänk en vanlig Win fönsterapplikation där arbetsytan bytts ut mot en kommandoradsbox. Eller om man vänder på det, ett standard windows kommandordsfönster men med egna menyer och kanske en toolbar där man kan starta egna aktiviteter.
Poängen med det är som jag sa, mindre olika fönster som kluddar ner spridda över skärmen och flyttande mellan dessa för att göra olika saker. Lite bättre kontroll på när och hur en applikation (debuggern) startas och avslutas inifrån "mitt" program.
Tänk en debugger som kräver en liten seriell debuggerkärna på målsystemet. Man startar då mitt program och talar om vilken målfil man vill köra mot. Sedan skall debuggerkärnan bootloadas ner till målsystemet med en knapptryckning. När nedladdningen är färdig så skall deuggerapplikationen startas upp i kommandofönstret. Sedan skulle det vara en bonus om det dessutom gick att skicka in valfria kommandon till konsol input på debuggern som kör i "kommandoboxen". T.ex för att automatiskt starta nedladdningen av objektkoden till målsystemet. Kanske även göra "Run" på det om man vill det.
Eftersom jag själv skrivit bootloaderkoden så hade det varit en enkel sak att bara byta ut applikationsfönstret, som idag bara är ett tomt fönster med ett par menyer, till en kommandoradsbox med debuggern. Om man bara hittar en komponent som gör det som en kommandoradsbox gör.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 4 juni 2010, 20:24:28
av E85
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 5 juni 2010, 11:55:42
av vfr
Tack, E85!
Den ser ju riktigt lovande ut.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 24 november 2010, 21:29:36
av vfr
Nu har jag tittat på denna komponent lite och blir bara förvirrad.
Det finns ju med ett exempelprogram, men jag kan inte hitta någon kod för exemplet. Det verkar heller inte finnas med någon DLL för själva komponenten. Och för källkoden till komponenten verkar det inte finnas någon information om hur det ska sättas ihop för att få en komponent av det.
Ska jag vara ärlig så var det kanske inte riktigt det jag behöver heller. Det här verkar vara ett sätt att köra en eller flera kommandoradsprocesser med tillgång till stdin och stdout som pipe-strömmar där output från en process kan bli input till nästa. I mitt fall så behöver jag egentligen ingen sådan interaktion med processernas input/output utan applikationen (debuggern) kör mera ett textmode "fönstersystem", gissningsvis baserat på ANSI-koder eller liknande. Egentligen skulle det i mitt fall kunna vara så enkelt som en "rå" text-mode komponent som helt enkelt startas med kommanoraden som inparameter och som presenterar ett text-mode fönster i min applikation. Då kan debuggern skriva ut och härja som den vill i det fönstret.
Det här borde ju vara ganska enkelt egentligen. Jag har några generella komponentbibliotek för Buildern, men hittar inget sådant där.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 30 november 2010, 03:01:11
av lgrfbs
Kan du inte göra så här då?
Kod: Markera allt
---------- Ditt program ------------
.
.
ShellExecute(Handle, 'open', 'c:\Windows\PIC_Debog.exe>Debug.txt', nil, nil, SW_SHOWNORMAL);
.
.
Öppnar filen Debug.txt
visar innehållet i en textruta
Stänger filen
.
----------------------------------------------------------------
Edit
Länk till sökresultat
Sökning 2
Sökning 3
Tror inte det du söker finns som komponent utan är frågan om lite underfundig programrening.
Edit 2:
Tog bort ett "e" ur felstavningen "deet"
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 30 november 2010, 07:31:44
av vfr
Nja, poängen är att jag vill ha ett sammanhängande fönster med fler kontroller på. Lite knappar, menyer mm som hänger samman. Och jag tror inte att det är omöjligt att hitta eftersom mina krav på interaktion med komponenten är låga. Det borde ju vara en tämligen "rak" funktion, tycker jag. Det gäller bara att hitta komponenten...

Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 30 november 2010, 09:58:11
av lgrfbs
Anser att det är det jag beskrivit för dig, har du kollat alla länkarna jag tog med?
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 30 november 2010, 11:30:46
av vfr
Med "Ditt program", så drog jag slutsatsen att föslaget handlade om att starta kommandoraden som en egen applikation skild från mitt program, vilket jag menade var annorlunda än det jag vill ha.
Jag har kollat alla dina länkar, men inte varenda länk på dessa sidor. Det ser ut ungefär som det jag själv sökt på, men inte tyckt att det gett något användbart. E85:s föslag var ju också med där och var väl nästan som jag ville ha, men mer inbäddat än vad jag var ute efter. Man kan väl säga att det jag är ute efter är något mittemellan. En komponent (som E85:s förslag) som kör en applikation i ett kommandoradsfönster som är visuellt integrerat med min applikation.
Kanske skulle det vara möjligt att göra i något utveckling-IDE, t.ex Eclipse eller liknande. Bara man kan starta och köra textapplikationen (som i det här fallet är en debugger), i ett textfönster som ändå är integrerat med applikationen. Jag har inte kört Eclipse så mycket att jag vet om det är möjligt där. I Eclipse borde det ju iallafall vara möjligt att lägga till toolbarknappar eller menyalternativ för det jag vill kunna göra utanför textmode-applikationen, t.ex starta en bootloader.
Idag kör jag ett antal olika applikationer och fönster för diverse saker. En textmode-konsol för "make", en egen applikation för bootload, en texteditor o.s.v
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 30 november 2010, 22:24:06
av lgrfbs
Exemplet med "Ditt program" var tänkt att commandline programmet körs i bakgrunden/dolt och all text hamnar i text filen som läses in till din textbox i ditt program, så dos program har aldrig synts för än text filen visas i ditt dos text fönster.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 30 november 2010, 23:20:12
av lgrfbs
Hoppas det löser sig för dig, kastade ihop ett gui som jag uppfattade att ditt program skulle se ut:

Men på grund av DLL fel just nu kan jag inte bygga exe filer av detta, blir lätt så om man ominstallerar windows uppe på redan befintliga installationer.
Re: Kommandoradskomponent till Borland C++ Builder/Delphi
Postat: 1 december 2010, 13:32:39
av vfr
Ja, det där är väl en bra bild av hur jag tänkte mig. Inte själva utseendet naturligtvis, men principen. Enda väsentliga skillnaden är väl då att jag som sagt inte kör en applikation med strömmande output, utan mera textmode "fönster" då det är en debugger med en textmode "skärmsida" indelad i olika fält där det skrivs med hjälp av cursorpositionering. Det är väl den punkten som det fallit på med t.ex E85:s exempel, och kanske även som jag uppfattar din lösning. Eller funkar din lösning även på en applikation som skriver på valfria platser på skärmen m.h.a positionering? Hur läser du ut vad textapplikationen skriver?
Intressant variant iallafall. En helt annan approach till saken...