2014-06-23 14 views
0

내 PC에서 내 휴대폰에 저장 한 파일을 찾아서 열 때 문제가 있습니다. this answer의 훌륭한 해결책에도 불구하고 제대로 작동하지 않습니다. 내가 여기에 HTC 센세이션 Z710e델파이 XE5 안드로이드 문제 파일 찾기

에서 실행하고있어 내가 실행하는 데 노력하고있어 코드 :

function GetSDCardPath: string; 
var MusicPathLength: integer; 
    MusicPath, SDCardPath: string; 
begin 
MusicPath:=System.IOUtils.TPath.GetSharedMusicPath; 
MusicPathLength:=Length(MusicPath); 
SDCardPath:=Copy(MusicPath, 0, MusicPathLength-5); 
Result:=SDCardPath; 
end; 

procedure TForm3.Button1Click(Sender: TObject); 
var sr:TSearchRec; 
begin 
    CardPath:=TPath.Combine(GetSDCardPath,'*.*'); 

    if (FindFirst(CardPath,faNormal,sr)=0) then 
    begin 
    repeat 
     Memo1.Lines.Add(sr.Name); 
    until FindNext(sr)<>0; 
    FindClose(sr); 
    end; 
end; 

나는 아래의 코드와 두 번째 테스트했고, 나는 분명히 같은 파일을 저장할 수 있습니다 파일 이름이 파일 목록에 나타나지만 적어도 내 외장 드라이브 F :로 표시되는 카드는 sdcard에 저장되어 있지 않은 것처럼 보입니다. TPath.GetDocumentsPath는 sdcard를 가리켜 야합니다.

procedure TForm3.Button1Click(Sender: TObject); 
var sr:TSearchRec; 
begin 
    CardPath:=TPath.Combine(TPath.GetDocumentsPath,'*.*'); 
    Memo1.Lines.Add(CardPath); 

    if (FindFirst(CardPath,faAnyFile,sr)=0) then 
    begin 
    repeat 
     Memo1.Lines.Add(sr.Name); 
    until FindNext(sr)<>0; 
    FindClose(sr); 
    end; 
end; 

procedure TForm3.WriteClick(Sender: TObject); 
var 
    s: string; 
    F:TextFile; 
begin 
    Memo1.Lines.Clear; 
    s := TPath.Combine(TPath.GetDocumentsPath,'file2.txt'); 
    AssignFile(F,s); 
    ReWrite(F); 
    Writeln(F,'Test'); 
    CloseFile(F); 
end; 

먼저 쓰기 단추를 클릭하여 파일을 작성한 다음 Button1을 클릭하여 디렉토리에 파일을 나열합니다. CardPath는 /data/data/com.embarcadero.TestApp2/files/ 입니다. 내 컴퓨터에서 내 장치에 표시되는 Android/data/com.embarcadero.TestApp2/files/폴더가 있지만 파일이 없습니다. 내 장치에 파일이 저장되어 있습니까?

+0

PC에서 본 디렉토리 구조와 다른 TPath.GetPath 문자열에서 읽은 디렉토리가 너무 다르기 때문에 내 파일의 위치를 ​​파악할 수 없다는 점을 잊어 버렸습니다. –

+0

PC에 따른 정확한 경로는 무엇입니까? 'GetSDCardPath' 함수를 호출하지만, 당신은 이동식 sd 카드에없는'GetSharedMusicPath'만을 사용합니다. 기기에서 볼 수있는 정확한 경로는 무엇입니까? 너는 그걸 잊어 버렸다. 귀하의 PC에 따라 이동식 SD 카드에 파일이 있습니까? – greenapps

+0

다른 테스트 코드를 추가했습니다. –

답변

1

나는 이것을 마침내 해결하는 방법을 발견했다. TPath.GetSharedDocumentsPath를 사용하면 저장시 드라이브로 장치가 연결되어 있지 않은 경우 PC에서 앱에서 저장 한 파일을 볼 수 있습니다 (this page에서 언급 됨). E.i. 앱을 사용할 때 PC는 sdcard를 드라이브로 동시에 사용할 수 없습니다.