Deutsch
Forum

Ole Strings

 
- 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
 
16.05.2004  
 



 
- Seite 2 -


Gut, ne Hex-Datenkette wolltest nicht, dann ne komprimierte vielleicht? Ich würde Dir ne kleine DLL basteln damits schnell geht und damit Du die Kneete nicht in den Sand gesetzt hast. Die Dll könnte dann 2 Funktionen haben, eine die ein BinFile zu einem komprimiertem txt-file macht, und ne Gegenfunktion.

Bis denne, iF
 
08.07.2004  
 




Michael
Wodrich
Ich habe mir das Beispiel mit den 2 Memodateien mal angesehen. Da wird erst ein String in der Länge der Datei vorbereitet und dann das File eingelesen. Beim Schreiben wird einfach der String angegeben.

Das ist genau wie in Deinem Beispiel. Allerdings würde ich das mit dem Char$() nochmals reaktivieren und testen. Denn genau so sollte es laufen.

Hast Du denn auch XProfan mit allen neuesten Patches versorgt?
Der Char$() hatte ja mal Probleme mit den im String enthaltenen Nullen.

MfG
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
08.07.2004  
 




Normann
Strübli
Yup, die neuesten Patches hab ich installiert.

Michael, das Problem ist nicht der String selbst sondern wie ich ihn
übergebe.

Was ich absolut nicht verstehe:
Wenn ich einen String mit der addr() einer Funktion übergeben möchte
dann klappt das nicht, siehe Profan Hilfe, da bei chr$(0) ende ist.

Jetzt habe ich aber einen Bereich# der die Daten enthält und sage einfach
Bereich& = Bereich# und schon steht ja die Adresse der Bereichsvariablen im LongInt und ich kann ihn übergeben. (zumindest Theoretisch)

also Statt:
xdbAssignField_Z(dbHandle&,0,PictureField&,addr(Daten$))

jetzt:
xdbAssignField_Z(dbHandle&,0,PictureField&,Bereich&)

Wenn ich mir die Memo-Datei jetzt mal mit einem Editor angucke steht
da tatsächlich was drin unzwar wieder genau bis zum Nullbyte GRRR!
Aber Warum? Warum nicht alles???

@IF:
Das mit der mini-Dll ist evtl eine Möglichkeit, aber sagt mir dennoch nicht
zu. Danke für Dein Angebot!
Das Problem ist (und es tut mir leid wenn ich so auf dem Theme rumreite)
ich möchte verstehen warum das so ist wie es ist und nicht funktioniert. Und wenn es nicht an Xprofan liegt dann werd ich den Entwicklern der Datenbank mal meine
Meinung dazu sagen (allerdings kenne ich nicht so viele englische Schimpfwörter )

Ok, ist schon spät bin müde und bevor ich dank es Stromausfalls (wg. dem kleinen Gewitter hier) alles neu schreiben muß sage ich
da mal

Gute Nacht!
 
08.07.2004  
 



[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]
 
08.07.2004  
 




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.
 
09.07.2004  
 




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
 
09.07.2004  
 



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?
 
09.07.2004  
 




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
 
09.07.2004  
 



Nun, wenn ich mich recht erinnere sind OLE-Strings nix weiter als Pointer mit einem 32bit Header welcher die Länge angibt.

iF
 
09.07.2004  
 




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. :|
 
09.07.2004  
 



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)
 
09.07.2004  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

16.191 Betrachtungen

Unbenanntvor 0 min.
H.Brill21.05.2024
Member 361000511.11.2022
RudiB.26.04.2022
Ingo20.01.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie