ansiString轉成char字串的問題.. |
答題得分者是:RedSnow
|
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
我有一個字串(假設是c:\123.txt),是由
test = test ExtractFilePath(OpenDialog1->FileName);
test = test "\\";
test = test ExtractFileName(OpenDialog1->FileName);
test = ExtractFileName(OpenDialog1->FileName);
中取出來的,我想利用fopen中的rw等的方式建立(或寫入)
但問題來了,fopen中的path是const char*的型態,
而ExtractFilePath(OpenDialog1->FileName)傳回來的是ansiString的型態
試過用char *s;
s=test.c_str()及
char ch(100);
strcpy(ch,test.c_str());
兩種方法,都抓不到字串,請問我該如何把ansistring的型態轉成char *的型態呢?
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
haman 您好: 您大概是想得太複雜了,給您一個範例參考:
AnsiString test = ExtractFileName(OpenDialog1->FileName); FILE *pt; char c; if ((pt = fopen(test.c_str(), "r")) == NULL) { ShowMessage("Cannot open file!"); } else { while (!feof(pt)) { fread(&c, 1, 1, pt); ...... } fclose(pt); } |
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
haman: ExtractFilePath(OpenDialog1->FileName); 得到的只是路徑,例: OpenDialog1->FileName -->> c:\123.txt ExtractFilePath(OpenDialog1->FileName) -->> c:\ 所以你的test假設test=""; test = test ExtractFilePath(OpenDialog1->FileName); -->> c:\ test = test "\\"; -->> c:\test = test ExtractFileName(OpenDialog1->FileName); -->> c:\\123.txt 你瞧c:\123.txt != c:\\123.txt test 直接導入OpenDialog1->FileName test=OpenDialog1->FileName; fopen(test.c_str(), "r")) 或: char *s; s=test.c_str()及 char ch(100); strcpy(ch,test.c_str()); 隨便你使用! 因為你只是將檔案搞錯了! 請參考!Andy Chang 發表人 - andychang1690 於 2005/06/03 11:04:40
------
Andy Chang |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
呵呵~真不好意思,一時偷懶才照抄一行而已,結果竟然忘了修改:
AnsiString test = OpenDialog1->FileName; FILE *pt; char c; if ((pt = fopen(test.c_str(), "r")) == NULL) { ShowMessage("Cannot open file!"); } else { while (!feof(pt)) { fread(&c, 1, 1, pt); ...... } fclose(pt); }前一篇的錯誤就不修改了,留在那裡警惕自己吧。 |
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
嗯..我找到問題了,一個粗心大意的錯@@"
原來是我把SaveDialog1打成了OpenDialog1
而OpenDialog1是我在另一個event中用到的,
順便把改好的貼上來吧@@"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String test ;
OpenDialog1->Execute();
test = test ExtractFilePath(OpenDialog1->FileName);
test = test ExtractFileName(OpenDialog1->FileName);
Edit2->Text = test;
FilePath = test; }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
String test;
char *s = StrNew(FilePath.c_str());
SaveDialog1->Execute();
test =ExtractFilePath(SaveDialog1->FileName);
test = test ExtractFileName(SaveDialog1->FileName);
Edit2->Text = test;
char *ch=StrNew(test.c_str()),line;
FILE *FileTest = fopen(ch,"wb");
FILE *FileTestS = fopen(s,"rb");
while(!feof(FileTestS))
{
line = getc(FileTestS);
putc(line,FileTest);
}
fclose(FileTestS);
fclose(FileTest);
} 一個單純的傳檔(或是說copy吧)^^"
來去研究如何加上網路吧^^
感謝各位大大
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |