Autor |
Beitrag |
AlexII
      
Beiträge: 180
|
Verfasst: Fr 13.02.09 17:24
Hallo,
hab eine neue Freeware geschrieben, Losungen heißt das, also tägliches Wort Gottes. Es öffnet sich ein Formular mit nem Vers aus der Bibel.
Beim deinstallieren (im Menü) werden alle Registry Einträge und die .exe gelöscht.
Bin jedem dankbar, der das Prog testet.!
PS. Bitte nur das Prog testen und nicht über den Glauben diskutieren, danke!
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von AlexII am Di 11.08.09 10:28, insgesamt 5-mal bearbeitet
|
|
freak4fun
      
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: Fr 13.02.09 17:29
Hallo,
das Programm sieht gut aus, der Link funktioniert auch und ich hab auf den ersten Blick keine Fehler gefunden.
Sehr gut, weiter so! 
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: Fr 13.02.09 17:30
Mir wäre auch die Meinung von Vista.Leuten wichtig.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 13.02.09 17:58
Ich habe es gerade unter Vista ausprobiert.
- Vermutlich durch die breiteren Ränder unter Vista ist es etwas zu tief unten, der untere Rand liegt hinter der Taskleiste.
- Ich würde ein Popup eher rechts unten als links unten erwarten, weil das eigentlich Standard ist.
- Den Vers (oder andere Internetseiten wie in "Info...") öffnen funktioniert nicht.
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: Fr 13.02.09 21:20
jaenicke hat folgendes geschrieben : | Den Vers (oder andere Internetseiten wie in "Info...") öffnen funktioniert nicht.[/list] |
Hm... kannst du mir vllt sagen wie ich URLs auch unter Vista öffnen kann?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 14.02.09 01:48
Ich habe es mittlerweile einmal ausprobiert. Ich nehme an du benutzt ShellExecute? Ich habe den Rückgabewert einmal ausgewertet. Ergebnis: Zugriff verweigert.
Dann habe ich einfach mal Win + R gedrückt und http://www.google.de/ eingegeben. Das hat nicht funktioniert. Irgendetwas hat da der IE8 RC1 bei der Installation verstellt.
Dann habe ich das Image mit Vista für Virtual PC von MS heruntergeladen, da hat es funktioniert. Es lag also nicht an deinem Programm sondern an meinem Rechner. Tut mir leid...
Dieses Image findest du hier, damit kannst du deine Programme selbst unter Vista testen, wenn auch nur ohne Aero:
www.microsoft.com/Do...f&displaylang=en
Dort funktioniert dein Programm allerdings trotzdem nicht. Grund: Irgendwoher bekommt das Programm den '01.01.2009' und das auch noch in dieser Form statt in der im System eingestellten (englischen). Dann kommt die Meldung im Anhang.
// EDIT:
Ja, gerade habe ich den FF als Standardbrowser festgelegt, dann wieder Chrome, jetzt geht es auch bei mir.
Einloggen, um Attachments anzusehen!
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: Sa 14.02.09 02:32
Das Datum bzw. die Tage rechne ich so aus
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function Losungstag(Datum: TDateTime): Integer; begin Result:=DaysBetween(Datum, StrToDate('01.01.' + IntToStr(Integer(YearOf(Now))))); end;
procedure TForm1.Button1Click(Sender: TObject); var z: Integer; begin z:=Losungstag(Now); end; |
Das funktioniert also nur im deutschen Windows bzw. wie da das Datumsformat eigestellt ist.
Kann mir jemand sagen wie ich den Code ändere und das Datum auf jedem Windows richtig ausgerechnet wird?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 14.02.09 02:53
Delphi-Quelltext 1:
| z := DayOfTheYear(now); | 
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: Sa 14.02.09 15:32
jaenicke hat folgendes geschrieben : |
Dort funktioniert dein Programm allerdings trotzdem nicht. Grund: Irgendwoher bekommt das Programm den '01.01.2009' und das auch noch in dieser Form statt in der im System eingestellten (englischen). Dann kommt die Meldung im Anhang. |
Danke für die Mühe, hast mir hiermit sehr geholfen, vielen Dank!!!
PS Hab das inzwischen korrigiert.
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: Sa 14.02.09 15:33
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Sa 14.02.09 20:47
Unter W2K läuft es leider nicht - falls das noch für dich relevant ist. S. Fehlermeldung.
Einloggen, um Attachments anzusehen!
_________________ Salus populi suprema lex esto
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: Sa 14.02.09 21:17
delphi10 hat folgendes geschrieben : | Unter W2K läuft es leider nicht - falls das noch für dich relevant ist. S. Fehlermeldung. |
Weiß du vllt woran es liegt?
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Sa 14.02.09 23:04
delphi10 hat folgendes geschrieben : | Unter W2K läuft es leider nicht - falls das noch für dich relevant ist. S. Fehlermeldung. |
Diese Meldung kam als erste. Such im Debugger die Adresse, vielleicht kommst du damit weiter.
Die von mir zuerst gepostete Fehlermeldung sah so selbstgemacht aus. Code87 Systemfehler, hast du eine fremde Unit eingebunden, die das absondern könnte?
Edit: Such mal den Text "Falscher Parameter"
Einloggen, um Attachments anzusehen!
_________________ Salus populi suprema lex esto
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 15.02.09 02:05
Hmm, ich habe das gerade unter Windows 2000 mit SP4 getestet. Der Fehler tritt dort auch auf. Im Callstack steht u.a. RtlTraceDatabaseEnumerate, aber ansonsten kann ich da nicht viel zuordnen.
Du lädst ja (mit GIMP erzeugte  ) PNGs mit den LMD-Tools, wenn ich das richtig sehe. Vielleicht machen die da etwas.
Dann hast du CreateParams überschrieben, was passiert da denn bei dir?
Wenn ich nämlich mit Delphi 7 (oder ist das Delphi 6 bei dir?) ein Programm erstelle, auch mit TJPEGImage, das du ja wohl auch benutzt, dann funktioniert das auch unter Windows 2000. Du musst also irgendetwas machen, was da Probleme macht. Und es muss etwas sein, was gleich beim Start da ist (eingebundene Units) bzw. passiert (FormCreate / CreateFarams).
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: So 15.02.09 11:29
Hi,
ja du hast recht ich hab da eine TForm1.CreateParams Procedure.
Hab sie jetzt entfern, kannst du jetzt testen, ob es jetzt funkt? Fanke!
Zuletzt bearbeitet von AlexII am So 15.02.09 17:58, insgesamt 1-mal bearbeitet
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: So 15.02.09 11:49
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: So 15.02.09 14:47
AlexII hat folgendes geschrieben : | Hi,
ja du hast recht ich hab da eine TForm1.CreateParams Procedure.
Hab sie jetzt entfern, kannst du jetzt testen, ob es jetzt funkt? Fanke! |
OK, läuft unter W2K. Aber nen Popup unten links? Na ja, ist im Prinzip egal.
_________________ Salus populi suprema lex esto
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 15.02.09 15:26
AlexII hat folgendes geschrieben : | ja du hast recht ich hab da eine TForm1.CreateParams Procedure.
Hab sie jetzt entfern, kannst du jetzt testen, ob es jetzt funkt? |
Wie auch delphi10 schon sagte: Es läuft jetzt unter Windows 2000.
Auch unter Windows 98 und ME funktioniert es. Genauso unter Vista und Windows 7.
Nur unter Windows 95 läuft es zwar auch, aber es gibt beim Beenden einen Fehler, der sich nicht so einfach wegklicken lässt (immer neue Meldungen). Aber Windows 95 ist ja nicht mehr wichtig, da lohnt es sich kaum da nach dem Fehler zu suchen.
AlexII hat folgendes geschrieben : | Sag mal woher weiß du das????????? |
An dem erzeugten Assemblercode. Z.B. sieht dein CreateParams so aus: Quelltext 1: 2: 3: 4: 5: 6: 7:
| 00477130 53 push ebx 00477131 8BDA mov ebx, edx 00477133 8BD3 mov edx, ebx 00477135 E83668FDFF call 0044D970 0047713A 814B2400000200 or dword ptr [ebx+$24], $00020000 00477141 5B pop ebx 00477142 C3 ret | Du fügst da mit or einen Wert hinzu, der hexadezimal den Wert $20000 hat. Welcher das ist, ließe sich dann auch nachschauen. Was mich etwas wundert: Du rufst das originale überschriebene CreateParams (per inherited) auf (rot markiert) bevor du den Style änderst (die nächste Zeile), das müsste eigentlich hinterher passieren, damit da auch der neue Wert übergeben wird, hätte ich gedacht.
Push und Pop sichern das ebx Register und stellen es wieder her, mov legt einen Wert von einem ins andere (hin und her hier^^) und ret springt aus dem aktuellen Unterprogramm zurück zur letzten Adresse (auf dem Stack).
Nun, und die PNGs und deren Inhalt stehen ja auch im Code drin, und im erweiterten Kommentarfeld steht bei einem davon drin "Created with The GIMP", bei einem anderen zusätzlich ein Copyrightvermerk. Öffne die Exe einfach in einem normalen Editor und such einmal nach "(c) 2004" und "Created with The GIMP". Dafür braucht man gar keinen Disassembler.
Ach ja, warum LMDTools fällt dir vermutlich an der Stelle dann auf. 
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: So 15.02.09 17:49
|
|
AlexII 
      
Beiträge: 180
|
Verfasst: So 15.02.09 17:59
Darf ich euch wieder mit der CreateParams.Geschichte; stören?
Im Tutorial stand auch im Klammern, dass das für XP gedacht ist, deswegen hab ich das jetzt so gelöst.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| function IsXP: Boolean; var OS: TOSVERSIONINFO; begin OS.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO); GetVersionEx(OS); Result := (OS.dwPlatformId = VER_PLATFORM_WIN32_NT) and (OS.dwMajorVersion = 5) and (OS.dwMinorVersion = 1); end;
procedure TForm1.CreateParams(var Params: TCreateParams); const CS_DROPSHADOW = $00020000; begin if IsXP then begin inherited; Params.WindowClass.Style:=Params.WindowClass.Style or CS_DROPSHADOW; end; end; |
Ich prüfe also erstmal ob es sich um XP handelt, wenn ja wird die Schattierung ausgelöst.
Könnt ihr gucken, ob es jetzt so funktioniert und eventuell den Code optimieren?
Die Losungen.exe hab ich aktualisiert.
|
|
|