CString - Multiple String suche?
-
Hi, hab folgendes Problem:
Ich habe einen String der sieht z.B.: so aus
Drive C: Fixed Disk
Volume Name: Windows 2000 (NTFS)
Volume Serial: 2293555577
Total Space: 10,742,181,888 bytes
Free Space: 7,186,571,264 bytes
Drive E: Network Disk
Volume Name: (NTFS)
Drive F: Fixed Disk
Volume Name: something (NTFS)
Volume Serial: 2492504988
Total Space: 4,622,573,568 bytes
Free Space: 2,043,850,752 bytes
Drive G: Network Disk
Volume Name: (NTFS)
Drive P: Network Disk
Volume Name: (NTFS)
Drive X: Network Disk
Volume Name: (NTFS)So daraus will ich jeweils nur den Block haben, der auch ne Fixe Disk enthält, also keine Network Disk(s)!
Die Laufwerksbuchstaben sind variabel, und ich glaub da liegt auch mein Problem! Also ich habe das schon erfolgreich aus einem noch viel längeren String gefilter, aber wie kann ich mir jetzt immer nur so ein Block raus filtern, und das mehrfach??
**
Drive C: Fixed Disk
Volume Name: Windows 2000 (NTFS)
Volume Serial: 2293555577
Total Space: 10,742,181,888 bytes
Free Space: 7,186,571,264 bytes
**Als nächstes muss dann Drive F kommen, dazwischen sind es ja Network Disk(s)
Wäre echt Klasse wenn mir jemand helfen kann...ich zerbrech mich daran schon den ganzen Tag den Kopf
-
Wenn du das meinst:
while(f.ReadString(str)) { str.TrimLeft();str.TrimRight(); if(str.Left(5)=="Drive" && str.Right(10)=="Fixed Disk") { // Block auslesen } }
/E: Eig kann man sich das <str.Left(5)=="Drive"> auch schenken
[ Dieser Beitrag wurde am 11.07.2002 um 18:41 Uhr von Nemesyzz editiert. ]
-
Ok, das brechen hat ein Ende
int sub, beg, end; CString str1, str2; for(beg = str1.Find("Drive", 0); ;beg = end) //beginn mit erstem drive { sub = str1.Find("Fixed", beg); if(sub < 0) // fixed nicht gefunden break; end = str1.Find("Drive", beg +1); //ende mit nächstem drive if(end < 0) //wenn kein nächstes vorhanden end = str1.GetLength(); //ist gesammtlänge das ende if(beg < sub&&sub < end) //ist fixed im gefundenem bereich { str2 = str1.Mid(beg, end - beg); } }
-
@ByteSlider : SAU COOL funzt soweit,
nur das er mir meine C Platte immer 2 mal aufführt, das bekomme ich aber wohl noch hin.... DANKE AUF JEDENFALL..@Nemesyzz : danke auch dir, werd probeweise mal deine version auch testen
-
Achja, find ich wichtig für später... ---->>> FAQ -->> done.