Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - #$D#$A - Problem
kandesbunzler - Di 21.11.06 02:27
Titel: #$D#$A - Problem
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 - Di 21.11.06 02: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 - Di 21.11.06 02: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 - Di 21.11.06 02:49
Moin und :welcome: im Forum!
Könntest du das mal näher erklären? ;)
cu
Narses
Manina - Di 21.11.06 02: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 - Di 21.11.06 02: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
kandesbunzler - Di 21.11.06 03: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
http://www.delphi-library.de/topic_nach+Dateien+suchen_1107.html&sid=f28c516dfa33989802c27b6e14d4fe85) 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 - Di 21.11.06 03: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 ! :zustimm:
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 - Di 21.11.06 03: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 - Di 21.11.06 03: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? :gruebel: 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
Manina - Di 21.11.06 03:22
@
Narses *kleinlautgrummel* oder so... :oops:
kandesbunzler - Di 21.11.06 23: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!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!