PChar Probl. mit RAD Studio Seatle DemoVersion



  • Hallo, schön guten Tag!

    Ich habe vor langer Zeit mal mit C++ Builder 6 die beiliegende Beispiele durchgeguckt um etwas zulernen.

    Jetzt habe ich die neue Version (RAD Studio Seatle DemoVersion) runtergeladen und installieert. Soweit alles OK.

    Nur mit einigen BCB6 Beispiele gehts nicht mehr.

    z.Bz. : Das Projekt: VirtualListView lässt sich garnicht mehr kompilieren.

    Fehlermeldungen :

    [bcc32 Fehler] ListView_test_code.cpp(167): E2034 Konvertierung von 'wchar_t *' nach 'const char *' nicht möglich
    [bcc32 Fehler] ListView_test_code.cpp(167): E2342 Keine Übereinstimmung des Parametertyps 'pszPath' ('const char *' erwartet, 'wchar_t *' erhalten)

    //----------------------------------------------------------------------------
    
    void __fastcall TfrmVirtualLView::CheckShellItems(int StartIndex, int EndIndex)
    {
    	   TWin32FindData FileData;
    		TSHFileInfo FileInfo;
    		TSystemTime SysTime;
            int I;
            TFileTime LocalFileTime;
    
            //Here all the data that wasn't initialized in PopulateIDList is
            //filled in.
            for(I = StartIndex; I <= EndIndex; I++)
            {
    				if (GetShellItem(I)->Empty)
                    {
                            GetShellItem(I)->FullID = ConcatPIDLs(FPIDL, GetShellItem(I)->ID);
                            GetShellItem(I)->ImageIndex = GetShellImage(GetShellItem(I)->FullID, (lstvwVirtualList->ViewStyle == vsIcon), false);
    
    						//File Type
    						SHGetFileInfo(PChar(GetShellItem(I)->FullID), 0, &FileInfo, sizeof(FileInfo), SHGFI_TYPENAME | SHGFI_PIDL);
    						GetShellItem(I)->TypeName = FileInfo.szTypeName;
    
    						//Get File info from Windows
    						memset(&FileData, 0, sizeof(FileData));
    						SHGetDataFromIDList(FIShellFolder, GetShellItem(I)->ID, SHGDFIL_FINDDATA, &FileData, sizeof(FileData));
    
                            //File Size, in KB
    						GetShellItem(I)->Size = FileData.nFileSizeLow/1000;
    						if (GetShellItem(I)->Size == 0)
    								GetShellItem(I)->Size = 1;
    
    						//Modified Date
    						memset(&LocalFileTime, 0, sizeof(LocalFileTime));
    						//with FileData do
    						if (ValidFileTime(FileData.ftLastWriteTime)&&
    								FileTimeToLocalFileTime(&(FileData.ftLastWriteTime),
    								&LocalFileTime)&&
    								FileTimeToSystemTime(&LocalFileTime, &SysTime))
    						{
    								try
    								{
    										GetShellItem(I)->ModDate = DateTimeToStr(SystemTimeToDateTime(SysTime));
    								}
    								catch(EConvertError &E)
    								{
    										GetShellItem(I)->ModDate = "";
    								}
    						}
    						else
    								GetShellItem(I)->ModDate = "";
    
    						//Attributes
    						GetShellItem(I)->Attributes = FileData.dwFileAttributes;
    
    						//Flag this record as complete.
    						GetShellItem(I)->Empty = False;
    				}
    		}
    }
    

    ( betrifft Zeile : SHGetFileInfo(PChar(GetShellItem(I)->FullID), 0, &FileInfo, sizeof(FileInfo), SHGFI_TYPENAME | SHGFI_PIDL); )

    könnt ihr mir bitte erklären und die Korrektur dazu zeigen.
    ( Sorry, ich fange erst an zu lernen. )

    Herzlichen Dank !





  • Danke

    @ Swordfish

    Ich habe auch schon gelesen und versuche alles nach zu machen. Hat leider nicht geholfen.


Anmelden zum Antworten