November 25, 2020, 05:48:26

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Access .Feld("Dateiname") <> Windows Dateiname

Begonnen von maddhin, Oktober 27, 2020, 10:39:59

⏪ vorheriges - nächstes ⏩

markus888

Zitat von: daolix am Oktober 28, 2020, 13:24:34Der Stack wird mit dem Push aufgeräumt, d.h. mit "push eineVariable" wird der Stack bereinigt, der Wert gesetzt, und der Stackptr korrigiert.

Also ich habs einfach getestet.
Hab zwei Byte auf den Stack gepusht und dann per pop 4 Byte ins Register geschrieben.
Und es ist tatsächlich so, dass die vorderen 2 Byte nicht überschrieben werden.
Warum auch, es kostet einfach zu viel Zeit.
Ob das Verhalten beim Schreiben von 4 Byte und lesen von 8 Byte gleich ist, weiß ich allerdings nicht.
Wenn du Lust hast, kannst ja testen. Ich meine einfacher ist es einfach einen korrekten Header zu schreiben.
Es steht dann also irgendetwas im Register was natürlich zu einem Fehler führen könnte.
Bei 32 Bit wurscht, bei 64 Bit nicht.

10 Jahre Access

maddhin

Zitat von: markus888 am Oktober 28, 2020, 11:34:03Ich hab die Funktion noch nie verwendet.
Mit dem Programmieren ist es recht einfach.
Alles was man nicht versteht, muss man sich erarbeiten.
Da gibt es keine Abkürzung, sonst wird man nie in der Lage sein, eigenständig Code zu schreiben
sondern bleibst ewig ein Kopierer, der bei Problemen nicht weiter kommt.
Du kannst dann auch weder mit der Hilfe noch mit der Dokumentation was anfangen -
fürs Programmieren bleibst du also unbrauchbar, wenn du dich nicht systematisch weiterbildest.

Die Frage ist also wo die Reise hin soll.

Boah. Ich habe mich schon entschuldigt und erklärt wie ich das gemeint habe. Muss so ein Kommentar sein? Den kannst Du so unter jede Frage hier im Forum posten.

1. Ich bin selbstständig, arbeite wg Corona extrem viel und versuche nebenher noch meine DB aufzubauen, um effizienter zu werden. Trotzdem habe ich 3 Tage versucht das Problem selbst zu lösen bevor ich hier gepostet habe. Mit c&p hat das nichts zu tun, ich kann inzwischen VBA und Access recht gut.

2. Die angesprochene Funktion ist zwar simple zu programmieren, aber für Normalos und Beginner ist der Hintergrund sehr komplex. Ich arbeite mich immer in die Materie ein, aber auch Du solltest eingestehen, dass ohne langjährige Programmiererfahrung oder Informatikstudium das schon ein ziemlicher Brocken ist und über normale Access-Kenntnisse hinausgeht.

Irgendwie ist es doch gerade der Sinn des Forums, dass alte Hasen mit ihrer Übersicht die Anfänger in die richtige Richtung stupsen und nicht sagen "du bist so doof und unfähig, lern erstmal richtig Programmieren und komm dann zurück!"



daolix

Ja wenn du ein Integer/word schiebst wird der Stackpointer nur um 2 Byte decrementiert, was u.u in asm zu Problemen führen kann. Aber ob nun 2 oder 4 Byte geschrieben werden hat keinen Geschwindigkeitsvorteil. Und VBA macht eh sein Ding, und richtet wohl erstmal jede Variable aus.

markus888

Zitat von: daolix am Oktober 28, 2020, 22:42:00Ja wenn du ein Integer/word schiebst wird der Stackpointer nur um 2 Byte decrementiert

Danke für den Hinweis, das war mir nicht klar.
Ich dachte der verschiebt bei 32 bit einfach immer um 4 Byte, und daher war ich der Meinung das die alten 2 Byte einfach stehen bleiben.

Funktioniert das aber bei der Übergabe an die Funktion nach dem selben Prinzip?
Weil dann müsste es bei einem falschen Parameter ja immer zu einem Fehler kommen.
Habs jetzt mal innerhalb von Delphi getestet.
Da wird bei Standard calling convention die Variable immer zuerst in Register geschrieben und dann immer die ganze Registerbreite in den Stack gepusht.
Daher sollte es tatsächlich egal sein, so lange man den Werte nicht nutzt.

Danke.
10 Jahre Access

markus888

Oktober 29, 2020, 09:25:23 #19 Letzte Bearbeitung: Oktober 29, 2020, 09:31:35 von markus888
Zitat von: maddhin am Oktober 28, 2020, 17:38:00Boah. Ich habe mich schon entschuldigt

Wozu, es ist in keiner Weise relevant ob du nur kopierst oder nicht.
 
ZitatMuss so ein Kommentar sein?

Beim Kommentar geht es darum, dass man bei Win API ohne die Grundlagen nicht weiter kommt.
VBA so lange es nicht API betrifft, ist trivial. Für einen Programmierer eine Sache von zwei Tagen systematischer Lernarbeit bis er mit VBA programmieren kann. Ein Anfänger braucht natürlich länger. Der hat auch nicht Jahre in Grundlagen investiert.
Bei Nutzung von API steigt die Anforderung dann gleich um einige Tausend Prozent.
Das soll einem einfach klar sein, wenn man damit beginnt.
Wenn man die Zeit nicht hat, bezahlt man besser jemanden, der sich das erarbeitet.
Das ist keine Frage der Intelligenz, sondern wofür man seine Zeit einsetzen will.

Ich wäre froh gewesen, wenn man mir das vor Jahren klar gemacht hätte, ich wäre heute viel weiter.
So und das wars jetzt auch von meiner Seite.
Die Frage, ob der Rückgabewert die Kopie garantiert, konntest du ja aus dem Hilfe Zitat entnehmen.
Viel Spaß weiterhin.
10 Jahre Access

maddhin

...dann bleibt mir mich für Eure Hilfe zu bedanken! @daolix @markus888