![]() |
Re: warten bis anwendung gestartet wird...
@SirThornberry Process32First ist immer der SystemProcess von daher ist es total bob ob man ne repeat oder while schleife nimmt, schöner ist aber die repeat schleife.
|
Re: warten bis anwendung gestartet wird...
Zitat:
|
Re: warten bis anwendung gestartet wird...
das ist keine unzulässige annahme, genausowenig wie Module32First immer das exe-progamm selbes (exename, exehandle etc) liefert
und was das mit dem byte und integer zu tun hat weiß ich auch nicht, nen byte hat 8 bits (0..255) sonst wäres kein byte, wie es intern gehandelt wird, d.h. trotzdem als integer etc. muss dich ja nicht interessieren, wenn die API nunmal so funktioniert kann man das auch benutzen. Edit: du meinst bestimmt es wäre keine Spezifikation da MS dies nie so gesagt hat. eine Annahme ist das so lange bis es mir einer widerlegt hat |
Re: warten bis anwendung gestartet wird...
Zitat:
Die Größe eines Bytes läßt sich mit sizeof() ermitteln. Die Annahme, daß der Rückgabewert bei einem Byte 1 ist, ist unzulässig! Hat etwas mit portablem Code zu tun. Zitat:
Du kannst dagegen "argumentieren" wie du willst. Da die von dir genutzte Funktionalität nicht dokumentiert ist, kann sie sich jederzeit ändern - genau wie bspw. die Native APIs in einem gewissen Rahmen sich ändern können. Entweder man weist explizit darauf hin und nimmt diese Möglichkeit in Kauf, oder man eben nicht. Aber da du nicht darauf hinweist, überläßt du nicht etwa dem Fragesteller die Entscheidung darüber, sondern enthältst ihm eine vitale Information vor. Zitat:
|
Re: warten bis anwendung gestartet wird...
@brechi: ein Integer hat zur Zeit bei den meisten 32 Bit, früher war er mal 16 Bit und in naher Zukunft ist er 64 bit.
Ich würde auch nicht davon ausgehen das der erste Prozess immer der Systemprozess ist solange es nicht explizit im msdn steht. Die Annahme ist ähnlich wie die das FindFist, FindNext die Dateinamen in alphabeticher Reihenfolge zurück gibt (ist nur bei NTFS laut msdn so), es ist eben abhängig von den äußeren Umständen. Und vielleicht ist bei der nächsten Windowsversion der erste Prozess nicht mehr der Systemprozess - und dann müsste man sein Programm umbauen. Also am besten immer gleich richtig machen so wie es im msdn steht. |
Re: warten bis anwendung gestartet wird...
1) du meintest ein byte besteht nicht immer aus 8 bit, das tu es wohl, wie es intern gespeichert ist ist es egal
wenn ich also nen byte benutze kann ich ausgehen, dass ich zahlen von 0 bis 255 darstellen kann. das nen sizeof nicht 1 zurückgeben muss hat doch nichts damit zu tun das das byte trotzdem aus 8 bits besteht. also könntest höchstens sagen nen byte hat 8 setzbare bits muss aber nicht 8 bit groß sein, desweiteren kann man wenn schon bei sizeof nicht davon ausgehen das es bei einem byte halt imemr 1 liefert. das da eventl was falsches rauskommt liegt halt an dem sizeof und nicht etwa an dem aufbau von nem byte 2) anders ist es bei nem integer, das muss nicht immer 32 bit groß sein, und wie man sieht ist es nunmal so das für 64 bit eben die programme umgeschireben werden müssen, das liegt aber nicht daran das der programmierer davon ausgeht, dass es halt immer 32 bit hat. davon kann man und jeder programmierer muss sogar davon ausgehen, schließlich programmieren wir hier immer noch mit delphi für nen x86 und windows. die programme werden halt nicht auf nem 64bit system laufen, deshalb gibt es halt da noch die 32bit emulierung - oder wie auch immer es MS macht. als beispiel hättest vielleicht char nehmen könne was in delphi 8bit und in java 16bit groß ist aber auch hier darf ich in meinem delphi programm selber davon ausgehen, dass es nunmal 8bit groß ist. das man durhc irgendwleche hacks den verlauf immer ändern kann ist auch klar. aber es gibt halt auch annahmen wie z.b. GetModuleHandle('kernel32.dll') ist immer gültig, die deiner auffassung ja von MS nie so gesagt werden, aber meiner meinung nach immer stimmen. sollten sie nicht stimmen, muss halt jemand etwas gehackt haben (dll aus der <nameeintragen> tabelle gelöscht haben etc.) @FindFist, FindNext die Dateinamen in alphabeticher Reihenfolge: MS sagt ja selbst das es nur für NTFS gilt, dann kann man sich auch nicht drauf verlassen :) und es stimmt ja auch bei fat nicht, aber du kanns mir auch kein windows/irgendwleche einstelleungen ala (fat32/ntfs) sagen wo meine 3 behauptungen/annahmen (module32firs,process32first,getmodulehandle('kern el32.dll')) nicht stimmen desweiteren unterstütz ich das mit der while schleife auch nicht, und bin auch sehr pingelig wenns um sowas geht. aber grundsätzlich wäre es egal - wenn die repeat scleife acuh schöner/besser/sicherer ist. aber manchmal bruacht man halt doch annahmen wie z.b. wie kommt man an des modulhandle ohne GetModuleHandle etc. und wenn man des dann weiß ist es besser, wenn mans auch für andere benutzungen nicht verwenden sollte |
Re: warten bis anwendung gestartet wird...
@brechi: Du hast schon recht, olli und ich (zumindest ich) wollten einfach damit sagen das man nicht immer von etwas ausgehen kann nur weil nicht das gegenteil irgendwo geschrieben ist.
Es ist doch zum Beispiel bedeutend einfacher ein Projekt von Delphi32 zu nehmen und einfach mit einem 64Bit Delphicompiler zu kompilieren als das Projekt dann neu zu schreiben. Wenn solche Annahmen sind as zum Beispiel der erste Prozess immer der Systemprozess ist sollte man explizit dazu schreiben das dies nur eine Annahme ist die unter dem aktuellen Betriebssystem zutrifft. Ansonsten könnte das ein Unwissender so aufgreifen und wundert sich später das etwas nicht funktioniert weil der davon ausgeht das deine Annahme (die nicht als Annahme markiert war) eine Festlegung war. |
Re: warten bis anwendung gestartet wird...
Zitat:
Zitat:
Zitat:
|
Re: warten bis anwendung gestartet wird...
ich bin ja auch eigentlich deiner meinung. imho läuft das auf allen BS, aber man sollte halt nichst benutzen was in der zukunft geändert sein könnte.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz