Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 241201 (2637)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Bereits angschnitten
Mathias Kranze
| Datum:07.05.02 16:08 |
Es wurde hier das Thema schon etwas angeschnitten das nicht alle Befehle auf jeden Rechner funkioren (Befehle die in Profan nicht mit einer api aufgerufen werden laufen nicht auf allen rechner) Warum ist das so. zudem akm man zum entschluss das aber eine funktionalität mit der entsprechenden Api herbeigeführt werden kann. Greift aber Profan nicht auf diese Apis zurück , sonder wie macht sie die Befehle verfügbar....
Thorsten
| Datum:08.05.02 08:46 (mrk@mrk-soft.de) |
Hallo Mathias, Die Frage ist irgendwie seltsamm gestellt. Warum etwas auf Rechner A funktioniert und Rechner B nicht, ist die einfache Tatsache, das es an den Versionen von Windows liegt, die sich grundsätzlich in NT und "Home Bereich" aufteilen. Unter Homebereich zählt Windows 95 / Windows 98 / Windows ME, der NT Bereich ist mit Windows NT / Windows 2000 und Windows XP bestückt. Und um es ganz einfach auf dem Punkt zu bringen: Windows NT und Windows "Home" unterscheiden sich konsequent von der Technik her, das hat auch zur folge, das nicht alle Api Funktionen von NT und "Home" gleich sind, bzw. sogar existieren. Mehr ist das nicht .... Profan hat damit nichts zu tun und kann nur das nutzen, was das Betriebssystem auf dem jeweiligen Rechner zur verfügung stellt. Frag mal ehr "Mikimaus-Soft", warum es API Unterschiede zwischen NT und "Home" gibt. !!! Und einige User benutzen ebend hier nicht Windows 95 / 98 oder gar ME, sonden haben Windows XP oder 2000 Installiert. Thorsten
Mathias Kranze
| Datum:08.05.02 16:28 |
Nein ich meine das eher in der Hinsicht, das Funktionen, die in profan nicht mit einer api abgerufen werde muss, zwar während der Entwicklung und dem erstellen der exe auf win98 problemlos laufen, aber anschließend auf einen anderen rechner, die ebenfalls win98 verwendet, die funktion verweigern und nicht ausführt.Stellt man hingegen auf api um, läuft alles ohne probleme....
Roland G. Hülsmann
| Datum:08.05.02 17:23 (rgh-soft@t-online.de) |
Vieleicht wäre es hilfreich wenn Du diese Funktionen mal beim Namen nennst. Welcher Befehl oder welche Funktion funktioniert bei Dir auf verschiedenen Rechnern unterschiedlich? Mir sind derartige Dinge bislang nicht bekannt. Gruß Roland
Mathias Kranze
| Datum:09.05.02 14:50 |
Einma ist das ganze bei SetCheck zu erkennen: Auf meinen Pc verläuft der Aufruf ohne Probleme (SetCheck N1,N2), auf einen anderen pc mit gleichen betriebssystem spuckt es hässliche fehlermeldungen aus (beim ersten Starten) oder reagiert überhaupt nicht beim namen (ab den zweiten starten der exe). Greift man hier auf die funktion sendmessegae so kalppt es bei beiden ohne Probleme. Weiterhin ist das bei findwindow zu beobachten: die funktion findwindow klappt bei mir ohne Zwischenfälle, auf dem anderen pc keine Reaktion, stellt man hingegen auf api um (sieh Forum) kommt es auf meinen pc zu keiner ausführung jedoch beim anderen pc zu keinerlei problemen (0). Zudem auch Winexe: Winexe spuckt bei mir egal was ich mache den gleichen Fehler aus, egal ob die datei gelöscht wurde, der pfad nicht stimmt, die datei beschädigt ist oder gezippt ist, egal ob bereits eion zugriff besteht oder ob sie eine fehlerhafte exentyp darstellt, immer wird mir angezgeigt, das die datei nicht vorhanden ist. Ist die Datei original wird sie geladen, doch vorher IMMER angezigt das die Datei nicht vorhanden wäre, am anderen pc erscheitn hingegen keinerlei fehlermeldung und das programm startet mit dem gleichen Quellcode und der gleichen behandenlten datei ohne Probleme. Ausnahme: eine Datei die ebenaflls die gleiche Bezeichnung trägt (Name des Spiels: Spiel.exe, Name einer anderen beliebigen Datei: SPiel.bmp) Hier wird auf dem anderen PC eine nicht vorhandene Datei als Fehler lokalisiert. Das waren nur einige Beispiele
Mathias Kranze
| Datum:09.05.02 17:39 |
Dabei scheitn es aber nur bei win98 aufzudrehten.... teste derweil weiter
Jörg Sellmeyer
| Datum:09.05.02 17:41 (joerse@gmx.de) |
Hallo Mathias, Bist Du Dir ganz sicher, daß SetCheck verantwortlich ist ? Hast Du schon mal:
    Cls
    declare Check&
    Check&=CreateCheckBox(%Hwnd,"Test",10,10,60,20)
    SetCheck Check&,1
    waitinput
ausprobiert ? Wenn das läuft ist es was anderes. Bei mir sind solche gern genommenen Fehler z. B. die Einbindung einer Dll (bei mir im Systemverzeichnis - auf anderem Rechner nicht vorhanden) oder Bitmaps, die nicht mit korrektem (relativem) Pfad angegeben werden. Wie lauten denn die Fehlermeldungen. Entschuldige die Fragerei, aber vielleicht hilft's bei der Fehlereingrenzung. Vielleicht kannst Du mal ein paar Codezeilen posten oder mir privat zuschicken. Vielleicht kommen auf einem weiteren System noch interessantere Ergebnisse zustande. Gruß Jörg
Mathias Kranze
| Datum:09.05.02 20:02 |
Um genauer testen zu können habe ich das profan beispiels dialoge genommen, welche eine solche funktion mit setcheck beinhaltet. Bei mir läufts ohne Probleme beim Beta Rechner hingegen erscheint je nach anzahl der starts entweder garnichts oder das Programm zeigt mir an das die hierbei benötigte DLL bzw, die hierbei verwendete DLL eine solche Funktion nicht beinhaltet. Dabei wird der Name der DLL nicht angezeigt es erscheint nur: Probleme beim Ausführen einer DLL Funktion Die vom Programm angesprochene Funktion wird von der verwendete DLL nicht unterstüzt. Die Funktion wurde für eine frühere Windows-Versionen entwickelt. Bei der sendmessage hingegen, keine Probleme
Jörg Sellmeyer
| Datum:09.05.02 22:33 (joerse@gmx.de) |
Welche Profanversion nutzt Du denn ? Wenn Du eine 16-Bit Dll aufrufst, ist die auf dem anderen Rechner evtl. nicht vorhanden. Ich glaube ohne konkrete Codezeilen kommt man da nicht weiter. Poste doch mal die Funktionsdefinition und den Aufruf. Außerdem - was meinst Du mit: bei der sendmessage. Ich glaube nicht, daß man SetCheck durch sendmessage ersetzen kann. Gruß Jörg
Mathias Kranze
| Datum:10.05.02 13:01 |
Schau dir einfach das Programm beispiel Dialoge an, dort tritt das Problem auch auf. mit sendmessage meine ich die möglichkeit das setzen auch per messeage zu machen ($0401 / $00F1 : bm_SetCheck ). Zudem nutze ich die Profan 7 32 bit. Hier das ganze: Declare hD%, hB%, hA%, hV%, hN%, hK%, hGm%, hGw%, OK%, \ Name$, Vorname$ Let hD% = @CreateDialog(%HWnd,"Dialogfenster 6",80,90,180,200) @CreateText(hD%,"Vorname:", 10, 8,60,20) @CreateText(hD%,"Name:", 10,33,60,20) @CreateIcon(hD%,"PROFAN", 125,90) @CreateGroupBox(hD%,"Geschlecht",10,75,100,60) Let hV% = @CreateEdit(hD%,"",75, 5,85,24) Let hN% = @CreateEdit(hD%,"",75,30,85,24) Let hk% = @CreateCheckBox(hD%,"Kunde",10,55,60,24) Let hGw%= @CreateRadioButton(hD%,"weiblich",17, 93,80,20) Let hGm%= @CreateRadioButton(hD%,"männlich",17,113,80,20) Let hB% = @CreateButton(hD%,"&OK",10,140,40,25) Let hA% = @CreateButton(hD%,"&Abbruch",100,140,60,25) @SetFocus(hV%) SetCheck hGw%,1 <-------------------- Hier wurde ich dann sendmessage eintragen Let OK% = 0 WhileNot Ok% WaitInput If @Equ(%Key,2) 'Alt-F4 bzw. Schließen Let Ok% = 1 ElseIf @GetFocus(hA%) 'ABBRUCH wurde angeklickt Let Ok% = 1 Cls Print "... abgebrochen ..." ElseIf @GetFocus(hB%) 'OK wurde angeklickt Let Ok% = 1 Let Name$ = @GetText$(hN%) Let Vorname$ = @GetText$(hV%) Cls Print "Name: ";Vorname$,Name$ If @GetCheck(hGw%) Print "weiblich "; Else Print "männlich "; Endif If @GetCheck(hK%) Print "und Kunde!" Else Print "und noch nicht Kunde!" Endif EndIf Wend @DestroyWindow(hD%)
Frank Abbing
| Datum:10.05.02 13:45 |
Hi, ein 32 Bit System verlangt hin und wieder auch mal LongInt-Variablen. Man darf nicht mehr davon ausgehen, das jedes Handle als 16 Bit Pointer zurückgegeben wird. Das ist mir schon bei allerhand Sourcecodes aufgefallen, viele davon laufen unter Windows XP z.B. nicht mehr richtig, weil dort nur Integer Variablen verwendet werden. Verwendet LongInt Variablen für Pointer und Handle, dann kann manch seltsamer Fehler vermieden werden... Gruß, Frank
Jörg Sellmeyer
| Datum:10.05.02 15:42 (joerese@gmx.de) |
Hallo Mathias, In Deinem Beispiel hast Du den Kommentar hinter SetCheck nicht auskommentiert: SetCheck hGw%,1 <-------------------- Hier wurde ich dann sendmessage eintragen Aber ich nehme nicht an, daß das schon die Lösung ist ;-) Bei mir läuft's anstandslos und ich kann auch nur wie Frank raten, alle Objekte über Longint-Handles zu erstellen. Wahrscheinlich reagieren spätere Windowsversionen da empfindlicher. Gruß Jörg
Mathias Kranze
| Datum:10.05.02 17:08 |
Jörg sagt selbst das es bei ihm anstandslos läuft, wie auch bei mir. Die Rede war ihr nicht ob es unter Windows XP läuft, meine Frage, mein kommentar oder auch Hinweis war darauf das dieser guelltext auf einen rechner mit win98 ohne Probleme läuft, auf einen anderen rechner der ebenfalls win98 betreibt, es zu unerwarteten Fehler kommt. Ihrbei ist zu beachten das die Tests immer mit der fertigen Exe durchgeführt wurden. es dürften sich also doch zwei win98 version nicht so krass unterscheiden oder?
Frank Abbing
| Datum:10.05.02 17:23 |
Hi, ersetzte alle Int's in LongInt's und compiliere dann neu. Kann sein, das der Fehler dann schon behoben ist... Gruß, Frank
Mathias Kranze
| Datum:11.05.02 11:31 |
Ok werde ich mal versuchen
Mathias Kranze
| Datum:12.05.02 13:14 |
Neuer Fehler: Winexewait und winexe reagieren gleich
Jörg Sellmeyer
| Datum: 12.05.02 16:41 (joerse@gmx.de) |
Hallo, Ich glaube so kommen wir nicht weiter. Du mußt schon mal ausführliche selbstgeschriebene Codezeilen posten. Am besten nur 4-10 Zeilen (lauffähig) bei denen auf Deinem oder einem anderen Rechner das Problem auftritt. Wichtig: nicht nur 10 Zeilen aus Deinem Code kopieren sondern auf das nötigste reduzierte Programmteile schreiben. Vielleicht merkst Du dann schon vorher, ob es an diesen Codezeilen liegt, oder ob Du vorher irgendwo einen Fehler eingebaut hast. Gruß Jörg
Roland G. Hülsmann
| Datum:12.05.02 13:43 (rgh-soft@t-online.de) |
Also das Dialogprogramm, so wie Du es hier gepostet hast (mit nachgetragenem Kommentarzeichen hinter dem SetCheck-Befehl), läuft auf meinem Rechner (1,5 GHz, Win2000 SP2, 512 MB) unter PROFAN 7.5 einwandfrei ... sowohl interpretiert als auch als EXE. Ich kann Deine Probleme leider nicht nachvollziehen. Roland

| Zurück zur Übersicht