AnsiStartsStr?
-
ich habe folgende "kleine" routine erstellt die bei meinem neuen php-editor zu verschiedenen themen direkt das phpmanual aufrufen soll:
AnsiString File = ""; AnsiString Func = SEeditor->WordAtCursor; if (AnsiStartsStr("$_GET",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.get"; } else if (AnsiStartsStr("$_POST",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.post"; } else if (AnsiStartsStr("$_COOKIE",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.cookies"; } else if (AnsiStartsStr("$_FILES",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.files"; } else if (AnsiStartsStr("$_SERVER",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.server"; } else if (AnsiStartsStr("$_GLOBALS",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.globals"; } else if (AnsiStartsStr("$_ENV",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.environment"; } else if (AnsiStartsStr("$_REQUEST",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.request"; } else if (AnsiStartsStr("$_SESSION",Func)) { File = "phpmanual/reserved.variables.html#reserved.variables.session"; } else if (AnsiStartsText("$",Func)) { File = "phpmanual/language.variables.html"; } else if (AnsiStartsText("if",Func)) { File = "phpmanual/control-structures.html#control-structures.if"; } else if (AnsiStartsText("elseif",Func) || AnsiStartsText("else if",Func)) { File = "phpmanual/control-structures.elseif.html"; } else if (AnsiStartsText("else",Func)) { File = "phpmanual/control-structures.else.html"; } else if (AnsiStartsText("do",Func)) { File = "phpmanual/control-structures.do.while.html"; } else if (AnsiStartsText("foreach",Func)) { File = "phpmanual/control-structures.foreach.html"; } else if (AnsiStartsText("for",Func)) { File = "phpmanual/control-structures.for.html"; } else if (AnsiStartsText("break",Func)) { File = "phpmanual/control-structures.break.html"; } else if (AnsiStartsText("continue",Func)) { File = "phpmanual/control-structures.continue.html"; } else if (AnsiStartsText("switch",Func) || AnsiStartsText("case",Func) || AnsiStartsText("default",Func)) { File = "phpmanual/control-structures.switch.html"; } else if (AnsiStartsText("declare",Func)) { File = "phpmanual/control-structures.declare.html"; } else if (AnsiStartsText("return",Func)) { File = "phpmanual/control-structures.return.html"; } else if (AnsiStartsText("function",Func)) { File = "phpmanual/functions.html"; } else if (AnsiStartsText("class",Func)) { File = "phpmanual/language.oop.html"; } else if (FileExists(ExtractFilePath(Application->ExeName)+"phpmanual/function."+AnsiReplaceStr(Func,"_","-")+".html")) { File = "phpmanual/function."+AnsiReplaceStr(Func,"_","-")+".html"; } if (File != "") { AnsiString open = ExtractFilePath(Application->ExeName)+ File; ShellExecute(Handle, "open", open.c_str(), NULL,NULL,SW_SHOWDEFAULT); }nur leider springt das programm nur auf die letzt möglichkeit mit dem FileExists an. der rest scheint nie zuzutreffen, was es aber eigentlich müsste?
seht ihr vielleicht warum?
-
Hallo
und was spricht der Debugger !
ich vermute mal:
das erste if ist true
und dann geht er zum File != ""MfG
Klaus
-
Dass AnsiStartsStr case-sensitive ist hast du bedacht?
Ansonsten wäre halt mal zu kontrollieren, was WordAtCursor tatsächlich zurückgibt.
-
Jansen schrieb:
Dass AnsiStartsStr case-sensitive ist hast du bedacht?
Ansonsten wäre halt mal zu kontrollieren, was WordAtCursor tatsächlich zurückgibt.ja das mit dem casesensitv mache ich sogar extra, da variabeln i php das auch sind.
-
Also ich habe jetzt herausgefunden, dass WordAtCursor bei Variabeln wie $_GET nur "_GET" enthält! das ist aber noch nicht alles, er scheint auch noch probleme mit dem # zu haben, denn bei alle dateien bei dennen ich sowas nicht angeben, funktioniert es jetzt einwandfrei! hat jemand eine lösung für dieses problem?
-
schreib dir doch einfach eine eigene WordAtCursor Routine...
-
das könnte ich schon machen, aber das löst dann immernochnicht das problem, dass ich keine dateien öffnen kann die nach der extension noch ein # haben.
bsp:
C:/bla/hashmark.html#hash35
-
Du musst dir vor Augen halten, dass ShellExecute einen reinen Dateinamen erwartet, du aber URLs angibst. Das kann so nicht funktionieren.
Du wirst nicht um den expliziten Aufruf der Browser-Executable herumkommen, mit Übergabe der URL als Parameter.
Oder du benutzt halt die CppWebbrowser-Komponente.
Oder du besorgst dir eine Version des PHP-Handbuches, in dem jede Funktion in einer eigenen HTML-Datei steht.
-
da steht jede funktion in einer extra datei.... nur die informationen über _GET und _POST variabeln stehen in einer eizelnen datei...
-
Sieh nochmal genau hin.
Ganz offensichtlich stehen z.B. die ersten neun Einträge deines Beispieles alle in derselben Datei (reserved.variables.html), das Anspringen der einzelnen Einträge erfolgt dann per HTML-Syntax.
Und mit genau dieser Syntax kann der implizite ShellExecute-Aufruf nichts anfangen, das kann nur ein Browser auswerten.Das alles hat aber auch nichts mehr mit dem Thema des Threads zu tun ...
-
Konsti schrieb:
das könnte ich schon machen, aber das löst dann immernochnicht das problem, dass ich keine dateien öffnen kann die nach der extension noch ein # haben.
bsp:
C:/bla/hashmark.html#hash35
-
Die Datei heisst definitiv
phpmanual/reserved.variables.html
und nicht
phpmanual/reserved.variables.html#reserved.variables.cookies
Versuch mal
String ergebnis; TDdeClientConv* dde=new TDdeClientConv(this); dde->SetLink("IExplore","WWW_OpenURL"); ergebnis=dde->RequestData("DEINE URL"+",,0xffffffff,0x0,,,,"); delete dde;Ist zwar dde und damit etwas veraltet.
-
erdgfvr:
Hat es eine tiefere Bedeutung, dass du diesen alten Thread ausgräbst, aber weder eine Antwort gibst noch eine Frage stellst?