Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Der neue FileSplitter ist da (https://www.delphipraxis.net/5327-der-neue-filesplitter-ist-da.html)

Luckie 2. Jun 2003 20:16

So, wa sich jetzt auch noch mal probiert habe:
Ich habe mir die CommDlg.pas von jemanden schicken lassen, der D5 Enterprise hat und habe damit kompiliert - geht auch nicht.
Un dich habe Mathias Version aus meinem Forum probiert - geht auch nicht.

Gleich rufe ich bei Borland. :twisted:

Luckie 2. Jun 2003 21:32

So jetzt habe ich die Nase aber so langsam voll. Unter ME etwas gebastelt bis es lief und dann unter 2000 getestet lief nicht. Unter 2000 wieder gebastelt bis es lief, unter ME getestet, jetzt läuft es da auch. So und welche Version läuft jetzt unter beiden OS? Genau die aller erste wieder, die mit TOpenFilename. Ich weiß echt nicht, was jetzt anders ist, als vorher.

Aaaaaaaaaaaaaaaaaaaaaaaaaah gerade wird mir berichtet das die Exe, die unter ME läuft unter 98SE es nicht tut.

Wenn das so weitergeht, bin ich bald ein nervliches Wrack. :twisted:

Luckie 2. Jun 2003 22:40

tommie-lie hat es gefunden:
Code:
ofn.lStructSize := SizeOf(TOpenFilename) - (SizeOf(DWORD) shl 1) - SizeOf(Pointer);

Jetzt sollte es auch unter 98, ME und 2000 gehen. Bleibt abzuwarten, was XP dazu sagt.

Luckie 3. Jun 2003 04:52

So Version 4.1 ist draußen. Ich habe doch noch was schnelleres gefunden, als Read- und WriteFile: BlockRead und BlockWrite. Bei großen Dateien (700 MB) ist es nicht so gravierend aber bei kleineren (6 MB) ist es ungefähr doppelt so schnell.
Desweiteren sind noch ein paar Visualisierungen dazugekommen.

Link im ersten Post!

mirage228 3. Jun 2003 05:40

Also bei mir (Windows XP) geht der Opendialog einwandfrei ;-)

Luckie 3. Jun 2003 05:43

Zitat:

Zitat von mirage228
Also bei mir (Windows XP) geht der Opendialog einwandfrei ;-)

Sei geküßt, Bruder. :P

Und wie gefällt es sonst so?

MathiasSimmack 3. Jun 2003 08:33

Zitat:

Zitat von Luckie
tommie-lie hat es gefunden:
Code:
ofn.lStructSize := SizeOf(TOpenFilename) - (SizeOf(DWORD) shl 1) - SizeOf(Pointer);

Jetzt sollte es auch unter 98, ME und 2000 gehen. Bleibt abzuwarten, was XP dazu sagt.

Ja, das geht. Aber das kannst du auch einfacher haben:
Delphi-Quellcode:
ofn.lStructSize := OPENFILENAME_SIZE_VERSION_400;
Delphi 5 ist zu alt und kennt nur das Standardrecord "TOpenFileName". Ausgehend von den Problemen würde ich dann also vermuten, dass Delphi 6 bereits auf das erweiterte, neue Record zugreifen kann. (s. PSDK)

Das PSDK enthält zusätzlich das alte Record mit der Bezeichnung "OPENFILENAME_NT4". Inwieweit Borland das übernommen hat, weiß ich (mangels D6) nicht.

Wie dem auch sei, in den Delphi-Tutorials (auch online bei dir im Forum) findest du die alte Recordgröße auch schon. Du kannst das erweiterte Record auch unter 2000/XP problemlos mit der alten Größe initialisieren. Mit anderen Worten: du kanntest die Lösung eigentlich schon, hast sie eben nur überlesen. :)

MathiasSimmack 3. Jun 2003 08:58

btw: Natürlich funktioniert das Programm (= der Quellcode) jetzt nicht mehr, wenn man nicht Delphi 6 oder 7 hat. Ist ja auch logisch. Wie ich schon schrieb, sind die Versionen vor D6 zu alt und kennen nur das Standardrecord, und durch
Delphi-Quellcode:
ofn.lStructSize := SizeOf(TOpenFilename) - (SizeOf(DWORD) shl 1) - SizeOf(Pointer);
bzw.
Delphi-Quellcode:
ofn.lStructSize := OPENFILENAME_SIZE_VERSION_400;
werden nun davon noch zwei DWORDs und ein Pointer abgezogen. Damit stimmt die Originalgröße nicht mehr, und die Dialoge erscheinen bei älteren Delphi-Versionen nicht. Du musst dich also tatsächlich an die Idee aus dem Forum halten:
Delphi-Quellcode:
if(Win2k) or (WinXP) then ofn.lStructSize := sizeof(TOpenFilename)
  else ofn.lStructSize := OPENFILENAME_SIZE_VERSION_400;
oder du probierst dein Glück mal mit dem schon erwähnten "OPENFILENAME_NT4"-Record, sofern es von Borland deklariert wurde.

Ja, ich weiß: du hattest das bereits gestern (~17 Uhr) geschrieben. Ich wollte also nur noch mal sagen, dass diese Idee also schon die richtige war. Gerade in Bezug auf ältere Delphi-Versionen. Ich habe sie nur nicht berücksichtigt, weil du mir deinen Quellcode ja zwecks Fehlersuche zur Verfügung gestellt hast.

Die von tommie-lie vorgeschlagene "Lösung", pauschal (ohne Versionsprüfung) die Größe zu verringern, halte ich deswegen auch für falsch.

Christian Seehase 3. Jun 2003 09:05

Moin Mathias,

so man denn die letzen Felder der Struktur nicht braucht, schadet es auch nicht sie wegzulassen. Neuere Versionen von Funktionen "wissen" ja von den verschiedenen Möglichkeiten, die sie dann anhand der übergebenen Strukturgrösse zu unterscheiden vermögen.

Die Standardkonstante für die kurze Grösse lautet gemäss PSDK OPENFILENAME_SIZE_VERSION_400, und Borland hat sich bei solchen Konstanten eigentlich immer schön an's PSDK gehalten.

@Luckie:
Ich hab' ja gesagt: Deklarier Dir die Datenstruktur selber ;-)

MathiasSimmack 3. Jun 2003 11:46

In dem Fall sollte bzw. muss er das sogar tun, weil er den Quellcode ja auch freigibt. Also muss er auch damit rechnen, dass sich jemand den Quellcode unter einer anderen Entwicklungsumgebung als Delphi 6/7 ansieht.

In dem Fall sehe ich mein Delphi 5 als Vorteil an. Alles, was neu ist, habe ich meist nicht. Nehmen wir nur die erweiterten Möglichkeiten der List-View unter Windows XP. Also muss ich den ganzen Kram selbst deklarieren. Veröffentliche ich dann so ein Programm samt Quellcode, dann lege ich auch die entsprechenden Deklarationen bei. So kann ich halbwegs sicher sein, dass das Programm auch bei anderen D5-Usern funktioniert.

btw: Konstante ist nicht gleich Record. OPENFILENAME_SIZE_VERSION_400 ist mir bekannt, und das habe ich ja auch erwähnt. Aber es gibt im PSDK noch ein Record namens OPENFILENAME_NT4, das bei lpTemplateName endet und damit der alten Struktur entspricht - oder sagen wir: dem Record, das ich in D5 habe. Wenn Borland das nun ebenfalls übernommen hat (vielleicht als "TOpenFileName_NT4"), kann man es ja auch mal versuchsweise verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz