Jump to content
php.lv forumi

c++ - string


EdgarsK

Recommended Posts

Sveiki :)

 

es lietoju visual c++ 2008 express studiju, problema man sekojosha :)

 

 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
	this->openFileDialog1->Filter = "pdf faili|*.pdf";
	this->openFileDialog1->Title = L"Izvēlies savu PDF failu";
	if(this->openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK){
	System::IO::StreamReader ^ sr = gcnew
	System::IO::StreamReader(this->openFileDialog1->FileName);
	System::String ^ s = "copy \""+this->openFileDialog1->FileName+"\" C:/instance.pdf";
	system(s);
	sr->Close();
	}
	}

 

problēma sekojoša - Cannot convert a managed type to an unmanaged type - tur kur definēju "s"

kā lai pareizi pārkonvertēt to 's' par charu ?

 

s_char funkcija nav :/ nesaprotu kapec.

Link to comment
Share on other sites

varbūt nemaz nevajag definēt to s? ;)

system("copy \""+this->openFileDialog1->FileName+"\" C:/instance.pdf");

vsp šādos gadījumos error message ir vnk jāiekopē googlē un jānospiež podziņa "Es ticu veiksmei!" :))

http://www.codeproject.com/KB/dotnet/managed_unmanaged.aspx?df=100&forumid=2227&exp=0&select=1121927

Edited by bubu
mazāk uzbraucienus
Link to comment
Share on other sites

Tas nav C++, tas ir C++/CLR, kurai ir lielas atšķirības no C++.

Problēma tev ir tāpēc, ka gribi System::String^ tipa objektu padot vietā, kur jāpadod const char* tipa izteiksme. Tās ir divas dažādas pasaules - menedžētā un nemenedžētā. Tā nevar.

 

Lai pārvērstu System::String uz const char*, kuru sagaida system funkcija jādara ir sekojoši: http://support.microsoft.com/kb/311259

Vai, protams, labāks variants - nelietot system, bet normālu Process klasi, no System.Diagnostic neimspeisa, ja jau programmēt .NET'ā. Tad nevajadzēs neko pārvērst uz const char*.

 

Un vilabāk - lai kopētu failus vajag lietot File.Copy no System.IO neimspeisa. RTFM!

 

Topikam nav nekāda sakara ar pārlūkprogrammu vidēm/valodām. Nākamreiz izvēlies atbilstošāku sadaļu.

Link to comment
Share on other sites

tad pēc tā ms kb article sanāk, ka viņam vajadzētu šādi izsaukt?

system(PtrToStringChars("copy \""+this->openFileDialog1->FileName+"\" C:/instance.pdf"));

lai arī tas nav ieteicamais file copy veids, bet tā string pārveidošana ta strādātu ja?

 

bubu, tev gan humora izjūta tāda interesanta. tas vsp nebija nekāds uzbrauciens

Edited by 2easy
Link to comment
Share on other sites

es izdariju sekojoshi :)

 

 	System::String ^ s = "copy \""+this->openFileDialog1->FileName+"\" \"C:\\pdfExport\\out.pdf\"";
	array<Byte> ^chars = System::Text::Encoding::ASCII->GetBytes(s);
	pin_ptr<Byte> charsPointer = &(chars[0]);
	char *nativeCharsPointer = reinterpret_cast<char *>(static_cast<unsigned char *>(charsPointer));
	std::string native(nativeCharsPointer, chars->Length);

Link to comment
Share on other sites

es izdariju sekojoshi :)

 

 	System::String ^ s = "copy \""+this->openFileDialog1->FileName+"\" \"C:\\pdfExport\\out.pdf\"";
	array<Byte> ^chars = System::Text::Encoding::ASCII->GetBytes(s);
	pin_ptr<Byte> charsPointer = &(chars[0]);
	char *nativeCharsPointer = reinterpret_cast<char *>(static_cast<unsigned char *>(charsPointer));
	std::string native(nativeCharsPointer, chars->Length);

njaa vēl sarežģītāk laikam nevar izdomāt, kā no viena stringa dabūt citu tādu pašu stringu :D:D:D

bet galvenais jau ka strādā ;)

 

 

bubu laikam domāja šādi :D

Topikam nav nekāda sakara ar pārlūkprogrammu vidēm/valodām. Nākamreiz izvēlies atbilstošāku sadaļu.

Edited by 2easy
Link to comment
Share on other sites

tā tomēr nav php, bet gan cita programmēšanas valoda

Sadaļa ir par pārlūka puses programmēsanas valodām, kuras tu lieto browserī (java, flash, utml).

 

Pareizais kods ir:

System::IO::File::Copy(this->openFileDialog1->FileName, "C:\\pdfExport\\out.pdf");

Link to comment
Share on other sites

man laikam sāktos depresija, ja vnk copy() vietā būtu jāraksta System::IO::File::Copy() :D:D:D

 

es jau saprotu, ka namespace vajag, lai nebūtu function name kolīzijas, bet nju tas ir traki gari anyway

ja es taisītu savu c++ valodu, tajā failu varētu nokopēt ar funkciju fcp() - file copy

cerams, neviens to neuztver pārāk nopietni ^^

Edited by 2easy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...