| Autor | 
Beitrag | 
kandesbunzler 
        
 
Beiträge: 116 
Erhaltene Danke: 1 
 
 
Delphi 7, XE2 
 | 
Verfasst: Di 21.11.06 01:27 
 
Hallo allerseits,
 
 beim Auswerten eines Dateisuchergebnisses (mit dme FileFind - Beispiel) erhalte ich folgendes Ergebnis:
 " 'C:\Test\Ergebnis.exe' #$D#$A ".
 
 Die Weiterverwendung als Stringvariable scheitert an der Fehlermeldung : 'Inkompatible Typen 'String' und 'PAnsiChar'.
 
 Was mache ich falsch?
 
 Danke und auf bald ...
 kandesbunzler. 
 
 | 
 | 
Manina 
        
 
Beiträge: 44 
 
Win 7 Pro 
RAD Studio 2010 Pro 
 | 
Verfasst: Di 21.11.06 01:33 
 
Ich kenne das FileFind-Beispiel nicht und weiß daher net, wie Du an das Ergebnis kommst, aber:
 
#$D#$A ist einfach ein Zeilenumbruch...
 mit s := Trim(StrPas(p)) solltest Du den String durchaus weiter benutzen können...    
 
 | 
 | 
kandesbunzler   
        
 
Beiträge: 116 
Erhaltene Danke: 1 
 
 
Delphi 7, XE2 
 | 
Verfasst: Di 21.11.06 01:39 
 
Hallo Manina,
 
 auch noch wach? -)) Danke für die rasche Antwort. Leider erhalte ich dennoch weiterhin die inkompatibilitätsfehlermeldung.
 
 Eventuell sollte ich erwähnen, daß ich die Prozedur: 
 
 Procedure FindFiles (aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings); 
 
 verwende.
 
 Auf bald ...
 kandesbunzler. 
 
 | 
 | 
Narses 
        
   
Beiträge: 10183 
Erhaltene Danke: 1256 
 
W10ent 
TP3 .. D7pro .. D10.2CE 
 | 
Verfasst: Di 21.11.06 01:49 
 
Moin und    im Forum!
 
Könntest du das mal näher erklären?   
cu
 Narses  
_________________ There are 10 types of people - those who understand binary and those who don´t.
  
 | 
 | 
Manina 
        
 
Beiträge: 44 
 
Win 7 Pro 
RAD Studio 2010 Pro 
 | 
Verfasst: Di 21.11.06 01:52 
 
Ah jaaaaa....
 
versuchs mal so: (wie zum Ku... fügt man hier formatierten Quelltext ein ?    )
 		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
  				 | 									var myList : TStringList; ... myList := TStringList.Create; myList.Sorted := TRUE;          myList.Duplicates := dupIgnore; FindFiles(..., myList); for i := 0 to myList.Count - 1 do begin   s := Trim(myList[i]);   if s <> '' then begin      ...   end; end; myList.Free;					 				 | 			 		 	  			
Hilft das weiter ?
 Gruß und GutNacht   
Moderiert von  raziel: Delphi-Tags hinzugefügt 
 
 | 
 | 
Narses 
        
   
Beiträge: 10183 
Erhaltene Danke: 1256 
 
W10ent 
TP3 .. D7pro .. D10.2CE 
 | 
Verfasst: Di 21.11.06 01:56 
 
Moin!
 
	   Manina hat folgendes geschrieben: | 	 		  (wie zum Ku... fügt man hier formatierten Quelltext ein ?   ) | 	  
Markier den Quelltext und klicke auf das Plus neben dem "Delphi" in der Listbox im Editor.   
Abgesehen davon ist dein Code so aufwändig gar nicht nötig (sofern es sich um die    DRIVETOOLS von   Luckie handelt, was ich mal unterstelle).   
cu
 Narses  
_________________ There are 10 types of people - those who understand binary and those who don´t.
  
 | 
 | 
kandesbunzler   
        
 
Beiträge: 116 
Erhaltene Danke: 1 
 
 
Delphi 7, XE2 
 | 
Verfasst: Di 21.11.06 02:04 
 
Guten Morgen allerseits
 
und danke für den freundlichen Empfang!
 Urks - ich hatte mich wohl etwas zu kurz gefaßt. Also:
 Ich suche mit Hilfe der FindFile Prozedure (siehe  www.delphi-library.d...89802c27b6e14d4fe85) eine Datei.
 Die o.g. Prozedur liefert das -fast- korrekte Ergebnis lt. Debugger (bspw.: " 'C:\Test\Ergebnis.exe' #$D#$A "). Auch die Übergabe dieses Ergebnisses an bspw.'Datei_und_Pfad_Name' (als String definiert !) klappt. Nun möchte ich diese Variable per WinExec (Datei_und_Pfad_Name, SW_SHOW) aufrufen und ausführen. Dies läßt der Compiler leider wegen besagter Fehlermeldung nicht durch. 
 Auf bald ...
 kandesbunzler.  
 
 | 
 | 
Manina 
        
 
Beiträge: 44 
 
Win 7 Pro 
RAD Studio 2010 Pro 
 | 
Verfasst: Di 21.11.06 02:05 
 
		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
  				 | 									var myList : TStringList;  ...  myList := TStringList.Create;  myList.Sorted := TRUE;          myList.Duplicates := dupIgnore; FindFiles(..., myList);  for i := 0 to myList.Count - 1 do begin    s := Trim(myList[i]);    if s <> '' then begin    ...    end;  end;  myList.Free;					 				 | 			 		 	  
Wunderbar ! Danke Narses !    
Aber da ich die DriveTools noch net kenne, hab ichs halt geschreibt, wie ichs dachte... Du siehst ja, ich bin auch noch ziemlich neu *kicher*, zumindest hier in diesem Forum...
 Gruß, Manina.  
 
 | 
 | 
Manina 
        
 
Beiträge: 44 
 
Win 7 Pro 
RAD Studio 2010 Pro 
 | 
Verfasst: Di 21.11.06 02:11 
 
HA ! Das ist ja ein gaaaanz anderes Problem !
 
WinExec erwartet ein PChar als Parameter, keinen String !
 Also mußt Du genau das andersrumme bauen !   
		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6:
  				 | 									var a : Array[0.. MAXPATHLENGTH] of Char;
  ...
  StrPCopy(a, aResultvonOben);  WinExec(a, ....);					 				 | 			 		 	  
Ich hoffe, das war jetzt syntaktisch korrekt... Es ist spät und ich bin müde.. Entschuldige !    
 
 | 
 | 
Narses 
        
   
Beiträge: 10183 
Erhaltene Danke: 1256 
 
W10ent 
TP3 .. D7pro .. D10.2CE 
 | 
Verfasst: Di 21.11.06 02:11 
 
Moin!
 
	   kandesbunzler hat folgendes geschrieben: | 	 		  | Die o.g. Prozedur liefert das -fast- korrekte Ergebnis lt. Debugger (bspw.: " 'C:\Test\Ergebnis.exe' #$D#$A "). | 	  
Die Prozedur liefert das absolut korrekte Ergebnis, nicht nur fast.   
	   kandesbunzler hat folgendes geschrieben: | 	 		  | Auch die Übergabe dieses Ergebnisses an bspw.'Datei_und_Pfad_Name' (als String definiert !) klappt. Nun möchte ich diese Variable per WinExec (Datei_und_Pfad_Name, SW_SHOW) aufrufen und ausführen. | 	  
Schätze mal, du meinst ShellExecute?    WinExec kenn ich nicht...   
	   kandesbunzler hat folgendes geschrieben: | 	 		  | Dies läßt der Compiler leider wegen besagter Fehlermeldung nicht durch. | 	  
Ja, da die API-Funktion einen PAnsiChar erwartet, du aber einen Pascal-String übergibst. Also noch ein PAnsiChar() um deine Variable im Aufruf, dann sollte es klappen.   
@  Manina: Viel zu aufwändig, ein Typecast reicht da völlig.   
cu
 Narses  
_________________ There are 10 types of people - those who understand binary and those who don´t.
  
 | 
 | 
Manina 
        
 
Beiträge: 44 
 
Win 7 Pro 
RAD Studio 2010 Pro 
 | 
Verfasst: Di 21.11.06 02:22 
 
@  Narses *kleinlautgrummel* oder so...     
 
 | 
 | 
kandesbunzler   
        
 
Beiträge: 116 
Erhaltene Danke: 1 
 
 
Delphi 7, XE2 
 | 
Verfasst: Di 21.11.06 22:53 
 
Hallo Nanina und Narses (und alle ungenannten),
 
 ich wollte mich noch für Eure Geduld und frühmorgendliches Engagement herzlich bedanken! Das Problem habe ich auch mit Eurer Hilfe lösen können. 
 
 Simply: Great!
 
 Auf bald ...
 kandesbunzler.
 
 PS.: ... und das Forum sowieso!!! 
 
 | 
 |