[Gelöst] Brauche Hilfe bei einer C++ Funktion

  • Ich versuche eine AU3-Funktion in C++ Nachzuschreiben, nur kriege ich das so gar nich hin.... Mir fehlt einfach der C++ Skill dazu ?(
    Nun ja, diese Funktion ist für mein Projekt: SciTEexecuter, und die AU3 Variante benötigt (auf meinem Schrotti) glatte 29 Minuten!! Und diese will ich mit der Cpp-UDF jetzt eben in C++ nachbauen und mal schauen wieviel Performance-Plus es gegenüber normalen AU3 gibt.




    Ich habe einen Teil der Funktion aus dem SciTEexecuter zur !Einsicht beigefügt, sie Funktioniert so nicht; ist aber zur veranschauung wie es bisher Funktionierte.
    So richtig weit bin ich mit dem C++ nicht gekommen, hab´s grad mal geschafft die 'cpp.api' in ein komisches Array-Format zu laden. Nur jetzt beginnt das Sortieren der Array-Einträgen, und das krieg ich gar net hin :pinch:
    Ich habe bereits fast 3 Tage für die C++ Funktion gebraucht, wegen mangelnder Helpfiles und schlechten Tut´s; und binn schon kurz davor die Sache in den Wind zu schiessen...



    Die 'Cpp-UDF' Funktion ist auch nur zur Veranschauung, und Funzt so nicht (da Fehlt eben der Rest des Programmes). Ich wollt nur mal Zeigen, das ich nicht nur Schlafe! Aber ich Peil nicht so richtig mit dem C++ :S
    Ich hoffe das mir jemand Helfen kann bei meinem Problem :D


    Grüsse von Techmix!

  • Also ich definiere mene Frage mal anders :D


    Welche C / C++ Befehle kann ich für folgende AutoIt Befehle verwenden?? ?(



    _FileReadToArray($FileCppApi, $AllIncludeFiles)

    Für diese Funk habe ich im C++ Source die Func: 'CHAR* LoadFile(LPSTR pszFileName)' gebastelt, die Funzt auch gut.
    Nur jetzt habe ich das Problem das diese Func einen String und kein Array zurück gibt.
    Dafür bräucht ich jetzt:
    $Array = StringSplit($AllIncludeFiles, @CRLF, 1)
    Nur wie mache ich das Array welches mir ja die StringSplit zurückgibt?
    char Array[] = "Hallo!"
    fprint("%s", Array[1])
    dann gibt fprint doch 'a' aus??


    Dann brauch ich noch umbedingt:
    StringInStr($AllIncludeFiles[$i], "(") ; und noch
    StringLen($IncludeLine) ; und auch
    StringIsUpper($AllIncludeFiles[$i]
    Ich habe natürlich schon meine dürftigen Helpfiles durchwühlt, und habe an meinem Schrotti im Keller kein INet um mich direkt schlau machen zu können! Und an dem entwickele ich eben...


    Nun ja wenn mir jemand sagen könnte welche Cpp Befehle und welche Includes benötigt werden, währe ich sehr dankbar!
    Den Rest kriege ich dann alleine hin... Denke ich :D


    Grüsse von Techmix!

  • Das ist net so leicht in c++, weil die arrays eine Feste Größe haben müssen wenn ich du währe würde ich mit containern arbeiten die sind besser

  • Ich arbeite bei solchen Sachen grundsetzlich mit vectoren. Sind eigentlich von der Handhabung her ganz einfach.



    (ungetestet)

  • @Sprenger: Genau, aber zuerst sollte man sich überlegen, wie man den String trennen will. Dann kann man sich Gedanken über das Speichern machen.

  • Ich binn´s wieder :D


    Ich habe einige Tage an den Funktionen gebastelt, weil es einfach nicht funktionieren wollte... Jetzt funktioniert das Splitten des 'Array´s' in einzelne Wörter. Und wenn ich einen Suchstring erstelle 'char Search_String[]' und dieser die gesammten Wörter/Befehle enthällt funktioniert es einwandfrei! Nur da ich die gesammten Befehle mit 'char* LoadFile(LPSTR pszFileName)' aus einer Datei auslese, geht´s nimmer ?(
    Ich denke jetzt das es daran liegt das das gesplittete 'LoadFile' einen Pointer zurückgibt...
    Wie kann ich jetzt die gesplitteten Daten aus 'LoadFile' in ein echtes Char bringen??? Tante Google habe ich schon gefragt, wußte aber nicht wonach ich genau suchen muss :D



    So wie ich den Code hier eingefügt habe funzt er Prima, nur wenn ich Zeile 51 mit 52 wechsele ('char Search_String[]' / 'char* LoadFile') Funktioniert es nicht mehr bzw. kann er die Einträge aus der Datei nicht mit den Array´s vergleichen; wieso????


    Ich hoff mal es kann mir jemand helden :rolleyes:


    Grüsse!

  • So wei bin ich gestern noch gekommen:


    Aber das Problem mit der Datei besteht immer noch, un ich kann iwie keine Array´s Redimmen ?(

  • Sooo ich habs hinbekommen :D ...endlich!
    Die orginale AU3 Funktion benötigt 1783 Sekunden, diese C-Funktion braucht nur 40 Sekunden 8| So einen Performancesprung hatte ich nicht erwatet!



    Und da ich diese Funktion für meinen 'SciTEexecuter' benötige habe ich sie mit der 'Cpp-UDF' für AutoIt erstellt:



    Man benötigt bloß eine Installation des SciTEexecuter und dann kann man die Funktion direkt testen :thumbsup:
    Und Danke noch für die Hilfestellungen!!!


    Grüsse von Techmix!