AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String Formatieren/Parsen

Ein Thema von Metal_Snake2 · begonnen am 6. Mär 2008 · letzter Beitrag vom 30. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#1

String Formatieren/Parsen

  Alt 6. Mär 2008, 17:14
Hallo,

ich habe ein Problem damit strings folgender art zu Parsen bzw. zu Formatieren:

RUNDLL32.EXE C:\WINDOWS\system32\NvCpl.dll,NvStartup
%systemroot%\system32\dumprep 0 -k
"C:\Programme\Java\jre1.6.0_03\bin\jusched.exe "
C:\WINDOWS\PCHealth\HelpCtr\Binaries\MSConfig.exe /auto
"C:\WINDOWS\PCHealth\HelpCtr\Binaries\MSConfig.exe " - scan
ALCWZRD.EXE /Test

Was ich will ist den genauen pfad zur jeweiligen exe/dll datei.
Diese strings sind werte aus der "Autostart" Registry.

Ich möchte halt die ganzen pfade zu den Dateien erhalten. Ich frage mich woher ich z.B. erhalten kann
das im "ALCWZRD.EXE /Test" string die "ALCWZRD.EXE" im System32 ordner ist?

Ich hoffe jemand kann mir weiterhelfen, denn das Problem hatte ich in letzter seit oft gehabt, ich habe
sogar meine eigenen String-Matching/Parsing Methoden geschrieben nur irgendwie hat das so keinen sinn.

Danke fürs lesen!
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#2

Re: String Formatieren/Parsen

  Alt 6. Mär 2008, 17:18
so wäre es eine Möglichkeit
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#3

Re: String Formatieren/Parsen

  Alt 6. Mär 2008, 17:28
Ok klar ist das suchen nach der Datei ne möglichkeit, nur wie soll ich suchen wenn ich aus den Obigen strings nichtmal den gültigen dateinamen erhalten kann? Ist das nicht auch uneffizient wenn man die ganze platte nach der datei sucht??
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#4

Re: String Formatieren/Parsen

  Alt 6. Mär 2008, 17:32
sry wenn ich das etwas falsch verstanden habe , aber suche doch einfach nach .exe oder .dll
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: String Formatieren/Parsen

  Alt 6. Mär 2008, 18:15
Guck dir mal das an:
http://r2c2.weingut-rehn.de/content3...mit_Delphi.htm
Da sollte alles drin stehen, was du brauchst...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: String Formatieren/Parsen

  Alt 7. Mär 2008, 08:49
so leid es mir für dich tut ist suchen die einzige Möglichkeit und Windows macht es nicht anders. Dadurch das leerzeichen in Dateinamen erlaubt sind kannst du manchmal einfach nicht unterscheiden ob es Parameter sind oder ob der Teil noch zum Dateinamen gehört.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: String Formatieren/Parsen

  Alt 7. Mär 2008, 10:41
Also, da Windows auch nicht hexen kann, muss es doch ein System geben, z.B. sowas:
Wenn 1.Zeichen ein '"' dann suche bis zum nächsten '"' und der Programmname ist Alles dazwischen, ansonsten ist der Programmname alles bis zum ersten Leerzeichen oder Zeilenende, je nachdem, was zuerst kommt.

So, nun haben wir den Programmnamen. Nun sind dort vielleicht noch Environment-Variablen ('%Bla%') enthalten. Na ja, dann ersetzen wir die eben (Preisfrage: Woher bekommt man die Windows-Umgebungsvariablen? Da muss es doch was geben... Vielleicht sogar hier im Forum? )

Nun haben wir also Programmnamen mit oder ohne Pfad. Und nun suchen wir. Nur wo? Unterm Bett? Auf der ganzen Festplatte? Bei Google? Nö, Windows ist ja genauso doof wie wir, also gibt es dafür eine Umgebungsvariable 'PATH', und das ist eine durch Semikolon getrennte Liste von Pfadnamen, in denen eine EXE gesucht wird. Ist sie in keinem der Pfade, dann existiert das Programm für Windows auch nicht.

Da die letzte Funktion ein wenig aufwändig ist (aber nicht wirklich), existiert vermutlich sogar ein API-Aufruf dafür, sicher bin ich mir aber nicht.


Zitat von SirThornberry:
...Dadurch das leerzeichen in Dateinamen erlaubt sind kannst du manchmal einfach nicht unterscheiden ob es Parameter sind oder ob der Teil noch zum Dateinamen gehört...
Ich bin mir nicht sicher, aber ich bezweifle, das ein Name wie:
Code:
Das ist aber ein bloeder Name.EXE
von Windows als einzelne Datei erkannt wird.
Code:
"Das ist aber ein bloeder Name.EXE"
aber schon, oder?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: String Formatieren/Parsen

  Alt 7. Mär 2008, 11:03
Hi,

es gibt eine SHLWAPI Funktion PathFindOnPath(), welche das Verhalten der Shell (CMD) beim Suchen nach einem ausführbaren Befehl nachbildet - ähnlich wie which unter Unix. Allerdings muss man bei fehlender Extension noch ein paar Zeilen selbst schreiben. Wenn Memo die Strings aus Beitrag #1 enthält, könnte das so aussehen:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  cmd, path: string;
  i: Integer;
begin
  with Memo do
    for i := 0 to Pred(Lines.Count) do
    begin
      cmd := ExtractField(Lines[i], 0);
      path := FindCommand(cmd);
      if path = 'then path := cmd;
      ShowMessage(ExpandEnvStr(path));
    end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: String Formatieren/Parsen

  Alt 7. Mär 2008, 11:05
@alzaimar: hexen kann Windows tatsächlich nicht aber es kann prüfen ob eine Datei existiert. Das kannst du dir demonstrieren lassen in dem du mal unter "ausführen" im Startmenü etwas rum probierst.
Folgendes Beispiel:
Datei: c:\Name1.bat
Ordner: c:\Name1.bat Name2

jetzt geb mal unter Ausführen "c:\Name1.bat Name2" ein und lass dich überraschen ob die Datei ausgeführt wird oder der Ordner geöffnet wird.
Ergebnis: Es wird der Ordner geöffnet

löschst du den Ordner wird die Datei ausgeführt. Folglich scheint Windows zu suchen was da ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: String Formatieren/Parsen

  Alt 7. Mär 2008, 11:09
Sir Thornberry: Wir reden aber nicht vom 'aktuellen Verzeichnis'. Ich bezweifle, das Windows eine Datei namens 'Sir Thornberry.EXE' im PATH findet, wenn Du 'Sir Thornberry' im Commandprompt eintippst, und Du dich in einem anderen Verzeichnis befindest.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz