Italia
Foro

Ole Strings

 
- Page 1 -



Normann
Strübli
Ciao,

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 supportati 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 trasferimento 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 supportati 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 per 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

Saluto
Normann Strübli
 
16.05.2004  
 



 
- Page 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 potuto 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 File 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 trasferimento möchte
dann klappt das nicht, siehe Profan Aiuto, 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 trasferimento. (zumindest Theoretisch)

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

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

Wenn ich mir die Memo-File 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 per 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 Io l' 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 per 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 Sostegno 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 per OLE Strings einbaut

Saluto
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 circa 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ß.

Saluto
Normann
 
09.07.2004  
 



Nun, wenn ich mich recht erinnere sind OLE-Strings nix weiter als Pointer mit einem 32bit Testata 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 File
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  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

16.299 Views

Untitledvor 0 min.
H.Brill21.05.2024
Member 361000511.11.2022
RudiB.26.04.2022
Ingo20.01.2020
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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