Hallo, für ein Projekt betötige ich eine Klassenbibliothek in der Personalisierte Dated gespeichert sind. Die Klasse steht schon, ist nur ein Sring der Geändert werden muss (ca 30 mal). Die Daten für den #string hab ich in einer txt, Format etwa so: Text1 Text2 .... TextN Nun ist es dumm jedes mal wenn ich neu kompiliere den ganzen Schmus von Hand einzutragen. Gibt es da vielleicht eine bessere Lösung für? Danke im Voraus, SD-Fritze
versuche mal bitte das Problem genauer zu beschreiben, ich kann mir noch nichts darunter vorstellen.
Also, ich habe eine Funktion die mir einen string als Return gibt. Und dieser String soll wärend des Kompilierens geändert werden, so dass ich mehrere Dateien mit jeweils anderen Returns bekomme. Bye, SD-Fritze
müsste ja dann der präprozessor machen
Ja, und wie bekomm ich den dazu (Bin absoluter Anfänger)?
leider fehlt immer noch ein paar Infos - in welcher art und weise soll der Return angepasst werden? woher soll also der Compiler wissen wann er welches String einsetzen soll? Auch seh ich den Sinn von sotwas noch nicht.
Wieso lädst du die Strings dann nicht einfach aus einer Textdatei? Wenn die personalisierten Daten mehrere Strings sind dann trenn sie einfach durch ein Semikolon und bei einer neuen Zeile ist dann ein neuer Datensatz also z.B. : Name1;Geburtsdatum1;Geburtsort1; Name2;Geburtsdatum2;Geburtsort2; oder so ähnlich
Hm, leider ist die DLL userspezifisch, so dass das nichts wird. Er soll einfach in eine Schleife einsetzen: pseudocode:
1 | For I= 1 to 30 |
2 | string = Readline("config.txt") |
3 | compile |
4 | rename |
5 | Next i |
Dann mach es doch genau so, schreibe ein kleines Programm welches in der quellcode datei den Text abändert und danach den Compiler aufruft. Aber Ich versteht den Sinn das ganzen nicht, eine Klasse die gleich heist und immer was anderes macht spricht nicht gerade für eine Saubere Programmierung - auch die Wartbarkeit und die Fehleranfälligkeit steigt damit. Bist du sicher das du es so machen must und es keinen sauberen Weg dafür gibt?
Naja, sie macht schon immer das Gleiche: Mir einen Key zurückgeben(gesalzener Hash von nem Gesalzenen Hash der anderen Sorte) und das auf meinem Server gegenchecken. Enthält auch Essentielle system keys.
und warum muss der wert da in der quelle drin stehen, wenn er doch unterschiedlich sein soll, dann kann er doch gleich aus einer ini gelesen werden.
NOOB-Protection. Außerdem habe ich da auch einige Kundenspezifische funktionen drin.
war ja klar, also kein richtiger Grund. Ob nun die ini Datei oder das komplette Programm ausgtauscht werden muss ist ja wohl egal. Und jeder der sich ein wenig auskennt öffnet einfach die exe und ändert den String drin ab. Das einzigste was ein wenig hilft ist das Programm an den Rechner zu binden z.b. Über den Windows GUID.
Jaja, kundenspezifische Funktionen sind kein Grund....
SchaueDir doch mal den Artikel an: http://www.tutorials.de/forum/net-tutorials/164307-c-kompilierung-zur-laufzeit.html Gruß Markus
Wo ist denn nun der unterschied wenn der Code gleich ist und die Klasse ihren return wert aus einer ini ausliest, oder ob der Wert gleich im Code steht? Es ist eine sehr unsaubere Programmierung wenn man soetwas im Code macht und dann verschienden Versionen von einer Klasse existieren. Es muss ja keine PlainText ini Datei sein. Es könnte ja auch eine Verschlüsselte Datei sein. Damit ist der Programm Code gleich und austauschbar.
Ich würde in den String, der in die dll compiliert wird, eine eindeutige Signatur der entsprechenden Länge schreiben und ein kleines Tool basteln, das die dll einliest, und gegen den endgültigen String austauscht. Dazu muß man nicht jedesmal den ganzen Bettel neu compilieren... Wenn der Linker allerdings eine Prüfsumme einträgt, die vom Lader geprüft wird, gehts leider nicht so einfach.
Oder die spezifischen Daten nach dem Linken an die EXE binden?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.