// Created by Jan Skansholm 2000
// This header file is intended for programs that use an MS_DOS console
// window to display data and read input. It gives correct input and
// output of all LATIN_1 letters, not only the letters a-z.
//
// Include this file in the function main and make the
// following call at the beginning of the program.
// dos_console();
// Then all output will be translated from LATIN_1 code to MS_DOS code 850
// and all input from MS_DOS code 850 to LATIN_1.
// It is also possible to use an alternative MS-DOS code.
// You can make the call
// dos_console(n);
// where n is a code number, 437 for instance.
// This header file supports MS-DOS codes 850 and 437, but it is easy to
// extend the file with additional codes.
Jag lyckas inte få det att fungera med Borland C++ 5.5.1.
testprogrammet ser ut så här:
#include <iostream>
#include "iodos.h" // included in main
using namespace std;
main()
{
dos_console(); // place this line first in main
cout << "Would you like some pâté?" << endl; // correct output
}
Och får felmeddleandet:
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
dosex.cpp:
Error E2293 iodos.h 106: ) expected
Error E2321 iodos.h 119: Declaration does not specify a tag or an identifier
Error E2451 iodos.h 126: Undefined symbol '_streams' in function dos_console(int)
Error E2285 iodos.h 126: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 127: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 128: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 129: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 132: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 133: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 134: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 135: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
*** 11 errors in Compile ***
Jag är inte tillräckligt duktig på C++ för att förstå vad som är fel... Tacksam för all ev. hjälp!
tyder ju på att du bara bommat en högerparentes i header-filen och isåf är resten bara vanliga följdfel. Fast det kan ju också vara Borland-specifikt. Kompilerar det i VC++?
/red: När jag körde ctrl-c->ctrl-v så kompilerade det rakt av i både VC++ och Bloodshed.
Du kunde kanske prova syntaxen:
class _dos_streambuf : public std::streambuf {
public:
_dos_streambuf(FILE *file, const int tin[], const int _tout[])
//: f(file), tab_in(tin), tab_out(_tout)
{
f = file;
tab_in = tin;
tab_out =_tout;
setg(buf, buf+1, buf+1);
}
ifall Borland gillar den bättre? (Varför vet jag inte riktigt.)
Jag får tacka för förslaget, men det hjälpte tyvärr inte.
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
dosex.cpp:
Error E2293 iodos.h 106: ) expected
Error E2321 iodos.h 119: Declaration does not specify a tag or an identifier
Error E2451 iodos.h 126: Undefined symbol '_streams' in function dos_console(int)
Error E2285 iodos.h 126: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 127: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 128: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 129: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 132: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 133: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 134: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
Error E2285 iodos.h 135: Could not find a match for '_dos_streambuf::_dos_streambuf(undefined,const int *,const int *)' in function dos_console(int)
*** 11 errors in Compile ***
Egentligen är det inget som säger att jag måste köra med borlands gamla kompilator, det var bara det att den var gratis, och jag trodde den var bra.
Om du inte redan löst problemet, 240glt, så kan du prova att göra följande ändringar i iodos.h:
1. Lägg in raden;
using namespace std;
efter #include-raderna.
(Nu kan du också avlägsna alla förekomster av "std::"-prefix om du vill, men det är inte nödvändigt.)
2. I deklarationen av medlemsmetoden _dos_streambuf::underflow(), som du nu bör hitta på rad 111 ungefär, lägger du till en typomvandling till "char" i tilldelningen i retursatsen. Ändra:
Jag tror inte jag riktigt förstår vad det var som var så roligt med mitt inlägg. Kanske kan någon av er grabbar förklara det för mig. :q
Att mitt förslag inte längre är aktuellt för just "240glt" var nog något som jag antog :OO , men tråden existerar ju fortfarande och det finns ju då troligen andra som hamnar i den av samma orsak som jag, nämligen via en sökmotor.
Själv letade jag efter var jag kunde ladda ner "iodos.h", och när jag sedan fick samma kompileringsfelmeddelande i BCC55 som "240glt" :P (vilket jag faktiskt inte fick när jag för många år sedan använde den med samma kompilator) så lyckades jag ganska snart lösa det med mitt lilla banala fix. (Punkt 2, typomvandlingen, orsakade bara en varning från kompilatorn, men, "what the heck", varför skall man acceptera varningar? :h )Tänkte att någon kunde ha nytta av det :i eftersom den här "iodos.h"-versionen uppenbarligen fortfarande finns att ladda ner från Chalmers, bl a.
BCC55 tror jag också fortfarande används på många håll. Själv använder jag den i kombination med ConTEXT-editorn för att snabbt och enkelt testa kodfragment, "snippets", innan jag lägger in dem i större projekt i de mer IDE-rika kompilatorerna. "Test-driven development" i liten skala alltså!
Så, när ni skrattat färdigt :e :e :e vore det intressant att höra något mer initierade kommentarer. Några av er kanske tycker att man bör lösa namnrymdsproblemet i "iodos.h" på ett bättre sätt än att använda "using"-direktivet, t ex? ;)
Om du inte redan löst problemet, 240glt, så kan du prova att göra följande ändringar i iodos.h:
Helt ärligt, var du medveten om hur gammal tråden var när du skrev inlägget? ;)
CatTrick skrev:
Att mitt förslag inte längre är aktuellt för just "240glt" var nog något som jag antog :OO , men tråden existerar ju fortfarande och det finns ju då troligen andra som hamnar i den av samma orsak som jag, nämligen via en sökmotor.
Både håller med och inte håller med. Det tillhör mer eller mindre god ton att inte fiska upp gamla trådar, å andra sida kan det vara bra om man söker i forumet, så jag är lite kluven där.
Det finns två anledningar till den posten jag gjorde. Den första är uppenbar. Den andra är att vi alltför ofta ser besökare titta in för 1-10 poster och deras inlägg är i stort sett alltid i urgamla poster.
Gamla poster finns till för just det syfte du hamnade i denna tråden, nämligen att hjälpa andra. Att stänga varje sådan tråd är troligtvis för stort administrativt jobb, såvida utveklingsgruppen inte tittar på att automatstänga trådar som är äldre än ett visst antal dagar. Det frångår dock inte fakta att tråden är fyra år gammal och att väcka en sådan tråd anses generellt vara onödigt :)
Man hamnar i ett forum genom allmän websökning, hittar en tråd där det ställts en fråga, om än för rätt länge sedan, en fråga som man själv delar men alltså inte får besvarad i tråden och till vilken man sedan själv letar upp en lösning och därför registrerar sig och meddelar en fungerande lösning i all välmening och möts av moderatorer (!) som skrattar ut en och antyder att man haft fräckheten att ta upp utrymme genom att väcka (avsluta) en några år gammal tråd ... TACK!
Trodde först du tog det på rätt sätt men det gjorde du bevisligen inte. Det var väl främst formuleringen i din inledande mening som var aningen komisk. Kan du inte förstå det, så är det nog bäst att vi stannar här och låter tråden vara i fred, så att den sakta kan sjunka tillbaka dit där den hör hemma.
272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e