Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Fragen zu string arrays


2 replies to this topic

Thilo T.

Thilo T.
  • Members
  • 13 posts

Posted 25 January 2005 - 09:05

Guten morgen allerseits,
ich habe mal ein paar fragen bezügl. string arrays:
wie deklariert man ein string array?
wie fragt man es ab?

In folgendem Beispiel möchte ich gerne alle laufwerke auf is_cdrom abfragen.

szDriveLetters ist hier = "abcd...z"
CODE

function GetCDRomDrive(szDriveLetters)
 number nvResult;
 string svResult;
 int iVal;
begin
 iVal=0;
   while (szDriveLetters[iVal]!=0 && iVal<26)
     svResult=szDriveLetters[iVal]+":";
     GetSystemInfo(DRIVE,nvResult, svResult );
     if nvResult=IS_CDROM then
        MessageBox("CD-ROM gefunden: "+svResult,MB_OK);
     endif;
     iVal++;
   endwhile;
end;

Fehlermeldung: Fehler C8126: 'szDriveLetters' : String-Variable erforderlich
Zeile: svResult=szDriveLetters[iVal]+":";

Wie kann ich z.B. szDriveLetters[0] an eine string variable übergeben um an das "a" zu kommen?

Danke für eure Tips,
Thilo

Edited by Thilo T., 25 January 2005 - 09:08.


Perotin

Perotin
  • Full Members
  • 407 posts

Posted 25 January 2005 - 10:35

Versuchs mal mit GetValidDrivesList ... Beispiel:
CODE

DriveList = ListCreate( STRINGLIST );
if( DriveList != LIST_NULL ) then
       GetValidDrivesList( DriveList, CDROM_DRIVE, 0 );
       nDrives = ListCount( DriveList );
       nResult = ListGetFirstString ( DriveList , svString );
       while( nResult = 0 )
          MessageBox("CD-ROM gefunden: "+svString,MB_OK);
          nResult = ListGetNextString ( DriveList , svString );
        endwhile;
endif;


Gruß / regards
Thomas

Thilo T.

Thilo T.
  • Members
  • 13 posts

Posted 25 January 2005 - 11:22

Hi Perotin,
danke für Deine Version.
Ich habe aber auch gerade die Lösung für meinen Weg gefunden:

CODE

while (szDriveLetters[iVal]!=0 && iVal<26)
   cvResult=szDriveLetters[iVal]&255;
   Sprintf(svResult,"%c:",cvResult);
   GetSystemInfo(DRIVE,nvResult, svResult );
   if nvResult=IS_CDROM then
      MessageBox("CD-ROM gefunden: "+svResult,MB_OK);
      return nvResult;  
   endif;  
 iVal++;
endwhile;


Tja, so früh am Morgen bin ich noch nicht so fit cool.gif Ich hatte übersehen, daß ich ASCII-Werte zurückbekomme.
So geht´s auf jeden Fall, wobei ich zugeben muß, daß Deine Lösung eleganter ist. Aber wenn man sich einmal an einer Idee festgebissen hat übersieht man ja leicht die anderen Möglichkeiten. Viele Wege führen nach Rom oder so... rolleyes.gif
so long,
Thilo