declaracion variables VC++ 2005 Express Ed.

30/09/2004 - 10:16 por Jordi Maycas | Informe spam
Hola hice esta declaracion y me dice que el parametro S necesita un
parametro /clr:oldstyle, o algo asi.. pero si lo pongo me detecta errores en
el .h en la linea de declaracion de la clase, en donde hay un public. El
caso es el siguiente:



String* path=S"hola"; // detecta error porque?

FileStream* fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None); //tampoco entiende el *

El codigo lo saque de:
http://msdn.microsoft.com/library/d...ntopic.asp

Y es este:



#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main() {
String* path = S"c:\\temp\\MyTest.txt";

// Delete the file if it exists.
if (!File::Exists(path)) {
// Create the file.
FileStream* fs = File::Create(path);
try {
Byte info[] = (new UTF8Encoding(true))->GetBytes(S"This is some
text in the file.");

// Add some information to the file.
fs->Write(info, 0, info->Length);
} __finally {
if (fs) __try_cast<IDisposable*>(fs)->Dispose();
}
}

// Open the stream and read it back.
FileStream* fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None);
try {
Byte b[] = new Byte[1024];
UTF8Encoding* temp = new UTF8Encoding(true);

while (fs->Read(b,0,b->Length) > 0) {
Console::WriteLine(temp->GetString(b));
}

try {
// Try to get another handle to the same file.
FileStream* fs2 = File::Open(path, FileMode::Open);
try {
// Do some task here.
} __finally {
if (fs2) __try_cast<IDisposable*>(fs2)->Dispose();
}
} catch (Exception* e) {
Console::Write(S"Opening the file twice is disallowed.");
Console::WriteLine(S", as expected: {0}", e);
}
} __finally {
if (fs) __try_cast<IDisposable*>(fs)->Dispose();
}
}

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
30/09/2004 - 20:12 | Informe spam
Me da que ya no hace falta la S. Te todas formas la sintaxis para escribir
código manejado en VC++ 2005 creo que cambia bastante. Aunque nunca escribo
código manejado en C++ :(

Hechale un vistazo a
http://msdn.microsoft.com/visualc/d...sguide.asp


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 Jordi Maycas
01/10/2004 - 11:20 | Informe spam
ya lo que pasa es que si la quito, me detecta errores en declaracion de
funciones por otro lado...

Te explico lo que quiero hacer: Una aplicacion windows con vc++2005 express
ed. que lo que haga es abrir un fichero, leerlo, etc... y por otro lado
quiero leer/escribir a nivel de sector.

"Rodrigo Corral [MVP]" escribió en el mensaje
news:%
Me da que ya no hace falta la S. Te todas formas la sintaxis para escribir
código manejado en VC++ 2005 creo que cambia bastante. Aunque nunca
escribo código manejado en C++ :(

Hechale un vistazo a
http://msdn.microsoft.com/visualc/d...sguide.asp


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org

Respuesta Responder a este mensaje
#3 Tomas Restrepo \(MVP\)
02/10/2004 - 20:35 | Informe spam
Jordi,

Hola hice esta declaracion y me dice que el parametro S necesita un
parametro /clr:oldstyle, o algo asi.. pero si lo pongo me detecta errores


en
el .h en la linea de declaracion de la clase, en donde hay un public. El
caso es el siguiente:



String* path=S"hola"; // detecta error porque?

FileStream* fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None); //tampoco entiende el *

El codigo lo saque de:



http://msdn.microsoft.com/library/d...ntopic.asp




El problema, creo, es que el ejemplo que estas usando utiliza la sintaxis
actual de Managed C++. VC++ 2005 introduce una nueva sintaxis para codigo
con .NET (llamada C++/CLI) que será la por defecto y la que se va a
desarrollar de aqui hacia adelante, abandonando la actual.

Puedes compilar con la anterior compilando con /clr:oldSyntax, en vez de con
/clr.

Por cierto, el ejemplo que pones podría traducirse a la nueva sintaxis así:
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main() {
String^ path = "c:\\temp\\MyTest.txt";

// Delete the file if it exists.
if (!File::Exists(path)) {
// Create the file.
FileStream^ fs = File::Create(path);
try {
array<Byte>^ info (gcnew UTF8Encoding(true))->GetBytes("This is some text in the
file.");

// Add some information to the file.
fs->Write(info, 0, info->Length);
} finally {
delete fs;
}
}

// Open the stream and read it back.
FileStream^ fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None);
try {
array<Byte>^ b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding(true);

while (fs->Read(b,0,b->Length) > 0) {
Console::WriteLine(temp->GetString(b));
}

try {
// Try to get another handle to the same file.
FileStream^ fs2 = File::Open(path, FileMode::Open);
try {
// Do some task here.
} finally {
delete fs2;
}
} catch (Exception^ e) {
Console::Write("Opening the file twice is disallowed.");
Console::WriteLine(", as expected: {0}", e);
}
} __finally {
delete fs;
}
}


#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main() {
String^ path = "c:\\temp\\MyTest.txt";

// Delete the file if it exists.
if (!File::Exists(path)) {
// Create the file.
FileStream^ fs = File::Create(path);
try {
array<Byte>^ info (gcnew UTF8Encoding(true))->GetBytes("This is some text in the
file.");

// Add some information to the file.
fs->Write(info, 0, info->Length);
} finally {
delete fs;
}
}

// Open the stream and read it back.
FileStream^ fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None);
try {
array<Byte>^ b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding(true);

while (fs->Read(b,0,b->Length) > 0) {
Console::WriteLine(temp->GetString(b));
}

try {
// Try to get another handle to the same file.
FileStream^ fs2 = File::Open(path, FileMode::Open);
try {
// Do some task here.
} finally {
delete fs2;
}
} catch (Exception^ e) {
Console::Write("Opening the file twice is disallowed.");
Console::WriteLine(", as expected: {0}", e);
}
} __finally {
delete fs;
}
}


Tomas Restrepo

Respuesta Responder a este mensaje
#4 Jordi Maycas
04/10/2004 - 12:44 | Informe spam
genial probare.. gracias

"Tomas Restrepo (MVP)" escribió en el mensaje
news:%
Jordi,

Hola hice esta declaracion y me dice que el parametro S necesita un
parametro /clr:oldstyle, o algo asi.. pero si lo pongo me detecta errores


en
el .h en la linea de declaracion de la clase, en donde hay un public. El
caso es el siguiente:



String* path=S"hola"; // detecta error porque?

FileStream* fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None); //tampoco entiende el *

El codigo lo saque de:



http://msdn.microsoft.com/library/d...ntopic.asp




El problema, creo, es que el ejemplo que estas usando utiliza la sintaxis
actual de Managed C++. VC++ 2005 introduce una nueva sintaxis para codigo
con .NET (llamada C++/CLI) que será la por defecto y la que se va a
desarrollar de aqui hacia adelante, abandonando la actual.

Puedes compilar con la anterior compilando con /clr:oldSyntax, en vez de
con
/clr.

Por cierto, el ejemplo que pones podría traducirse a la nueva sintaxis
así:
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main() {
String^ path = "c:\\temp\\MyTest.txt";

// Delete the file if it exists.
if (!File::Exists(path)) {
// Create the file.
FileStream^ fs = File::Create(path);
try {
array<Byte>^ info > (gcnew UTF8Encoding(true))->GetBytes("This is some text in the
file.");

// Add some information to the file.
fs->Write(info, 0, info->Length);
} finally {
delete fs;
}
}

// Open the stream and read it back.
FileStream^ fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None);
try {
array<Byte>^ b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding(true);

while (fs->Read(b,0,b->Length) > 0) {
Console::WriteLine(temp->GetString(b));
}

try {
// Try to get another handle to the same file.
FileStream^ fs2 = File::Open(path, FileMode::Open);
try {
// Do some task here.
} finally {
delete fs2;
}
} catch (Exception^ e) {
Console::Write("Opening the file twice is disallowed.");
Console::WriteLine(", as expected: {0}", e);
}
} __finally {
delete fs;
}
}


#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main() {
String^ path = "c:\\temp\\MyTest.txt";

// Delete the file if it exists.
if (!File::Exists(path)) {
// Create the file.
FileStream^ fs = File::Create(path);
try {
array<Byte>^ info > (gcnew UTF8Encoding(true))->GetBytes("This is some text in the
file.");

// Add some information to the file.
fs->Write(info, 0, info->Length);
} finally {
delete fs;
}
}

// Open the stream and read it back.
FileStream^ fs = File::Open(path, FileMode::Open, FileAccess::Read,
FileShare::None);
try {
array<Byte>^ b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding(true);

while (fs->Read(b,0,b->Length) > 0) {
Console::WriteLine(temp->GetString(b));
}

try {
// Try to get another handle to the same file.
FileStream^ fs2 = File::Open(path, FileMode::Open);
try {
// Do some task here.
} finally {
delete fs2;
}
} catch (Exception^ e) {
Console::Write("Opening the file twice is disallowed.");
Console::WriteLine(", as expected: {0}", e);
}
} __finally {
delete fs;
}
}


Tomas Restrepo



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida