| |
|
|
- Seite 1 - |
|
Normann Strübli | Hallo,
habe die Ehre die Erste Frage hier stellen zu dürfen
Ich arbeite im Augenblick dem Datenbank-System Cheetah [...] und das ganze funzt auch fantastisch. Die Dll unterstützt den Funktionsaufruf mittels OLE Strings aber auch mit Standard null-terminierten Strings. So weit so gut...
Nun möchte ich die Memofelder nutzen um dort binäre Daten (Bilder) zu speichern. Da in der entsprechenden Funktion keine Bereichsvariable sondern nur der String übergeben wird ist die maximale länge ja auf 32767 Zeichen begrenzt - das langt aber nicht hin
Wenn ich das richtig verstanden habe sind OLE-Strings grob gesagt dynamische Strings die keine definierte Länge haben und jedes beliebige Zeichen enthalten können (verbessert mich bitte) und nicht von Profan unterstützt werden. -also Pech gehabt...
Eigentlich habe ich mir die Frage damit ja schon selbst beantwortet, oder ich habe da was übersehen???
Leider ist die Datenbank keine Freeware , aber Vielleicht hat ja jmd. Interesse die ganzen Funktionen für Profan umzusetzen - habe schon eine Include geschrieben die den Umgang vereinfacht.
Jetzt mag sich einer Fragen Warum ich die Dll überhaupt benutzte:
1. Sehr klein, stand alone 2. Sehr schnell 3. Umfangreiche Suchfunktionen 4. Will mich nicht mit SQL beschäftigen
hier nochmal kurz die Spezifikationen:
Max number of records: 2,147,483,647 Max number of fields: 1000 Max character field size: 256 Max numeric field size: 20 Max memo size: Limited by disk space Max record size: 4000 bytes
Indexes Max open indexes per database: 100 Max fields for compound indexes: 6 Total allowable open indexes: 1000 Queries
Max number of conditions: 50 Max sort expressions: 6 Multiuser
Max number of concurrent users: 255
Gruß Normann Strübli |
|
|
| |
|
|
|
| |
|
- Seite 2 - |
|
| [quote:499fc797e0]@IF: Das mit der mini-Dll ist evtl eine Möglichkeit, aber sagt mir dennoch nicht zu. Danke für Dein Angebot![/quote:499fc797e0] |
|
|
| |
|
|
|
Michael Wodrich | getreu dem Motto: was die Datenbank können soll, das soll sie dann auch ohne Fremdeinwirkung tun... Muß ich Dir irgendwie recht geben.
Aber wie wäre es statt mit schimpfen einfach mal mit Verbesserungsvorschlägen. Teile den Entwickern einfach mit, daß das mit den Memofeldern nicht in allen Programmiersprachen funktioniert und frage, ob sie nicht eine Funktion einbauen können, die eine Adresse und eine Längenangabe erwartet. Dann werden aus dem Speicherbereich, auf den die Adresse zeigt, genau Anzahl Bytes in die Memodatei kopiert (und Rückweg genau so). Das sollte dann mit allen Programmiersprachen funktionieren.
MfG Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 09.07.2004 ▲ |
|
|
|
|
Frank Abbing | Hi,
vielleicht können dir die APIs lstrcpy() und lstrcat() helfen. Die kopieren (bzw. hängen an) einen String in einen Buffer. Ansonsten kann dir vielleicht auch MultiByteToWideChar() oder WideCharToMultiByte() helfen. |
|
|
| |
|
|
|
Normann Strübli | [quote:8a80d2de32]vielleicht können dir die APIs lstrcpy() und lstrcat() helfen. [/quote:8a80d2de32] leider nein da sie als Parameter ebenfalls einen Nullterminierten String erwarten und er damit automatisch gekürzt wird. [quote:8a80d2de32]was die Datenbank können soll, das soll sie dann auch ohne Fremdeinwirkung tun... [/quote:8a80d2de32] Natürlich kann ich erwarten das alles einwandfrei funktioniert verdammt, so eine Sch&$% DB! Außerdem schimpf ich ja gar nicht! (auch wenn sich das vielleicht so liest)
Aber Du hast ja recht und ich habe wieder eine Mail an den Support geschrieben. Ich wollte halt gern ausschließen das es an mir oder Xprofan liegt, englische Mails verfassen gehört nämlich sicherlich nicht zu meinen Stärken, aber warum sollen die nicht auch mal was zu lachen haben bei der Arbeit.
Mal gucken was da passiert!
Andernfallst wäre es wohl nicht zu viel verlangt wenn Roland schnell mal eben eine Unterstützung für OLE Strings einbaut
Gruß Normann |
|
|
| |
|
|
|
| Hmmm, waren OLE Strings nicht diese, welche mit einem der Längenangabe beginnen (anzahl d. bytes) und dann mit dem eigendlichen Inhalt bestückt sind? Vielleicht kannst du das einfach über einen Bereich simulieren, hörst Du? |
|
|
| |
|
|
|
Normann Strübli | Ich höre...
versteh nur nicht ganz - war das jetzt ne Frage?
Weißt Du denn was OLE Strings genau sind? - ich nix genau weiß.
Gruß Normann |
|
|
| |
|
|
|
| Nun, wenn ich mich recht erinnere sind OLE-Strings nix weiter als Pointer mit einem 32bit Header welcher die Länge angibt.
iF |
|
|
| |
|
|
|
Normann Strübli | Du meinst also so:
FileData# < enthält sinngemäß z.B. den Inhalt der Datei DataOLE# < Enthält den simulierten OLE String
Adresse& = FileData#
LONG DataOLE#,0 = @SizeOf(FileData#), Adresse&
Also die ersten 4 byte geben die länge an und die nächsten 4 die Adresse der Bereichsvariablen.
Wenn ja dann geht nicht. :| |
|
|
| |
|
|
|
| Nee, probier mal 32bit größe, und rest Data.
Also
dim b#,8 long b#,0=4 byte b#,4=ord(t) byte b#,5=ord(e) byte b#,6=ord(s) byte b#,7=ord(t) |
|
|
| |
|
|
| |
|
- Seite 3 - |
|
|
Normann Strübli | Danke iF aber aber es funzt so nicht...
Die gute Nachricht ist das die Entwickler meine Nachricht dechiffrieren konnten und mein Problem angeblich verstanden haben
Ich rechne also nächste Woche mit einem Update, und wenn dann schließlich alles zu meiner Zufriedenheit läuft werd ich natürlich die fertigen Includes und eine kurze Deutsche Anleitung posten.
Also abwarten.... |
|
|
| |
|
|
|
Normann Strübli | Ich freue mich... freut euch mit mir (weil keine dummen Fragen meht kommen)
Dem Entwicker war das Problem wohl noch unbekannt aber er hat doch schnell reagiert und ich habe die neue DLL! mit neuer Funktion!
Manchmal sollte man sich ganz einfach nicht zulange damit aufhalten den Fehler dort zu suchen wo er nicht ist.
Ich danke allen die mir bei diesem langweiligen Thema geholfen haben... |
|
|
| |
|
|
|
| Hey Primö! Kannst ja mal so nen fertig-kompiliertes Teil (deine exe meine ich) und die neue dll zuschicken. (wenns erlaubt ist natürlich nur).
Oder gar hier posten als attachment. Würde mir gerne mal so ein Zwischenergebnis ansehen.
Bis denne, iF |
|
|
| |
|
|