![]() |
Datenbank: Interbase • Version: 6 • Zugriff über: Borland Data Provider
VB.NET zu Delphi.NET Problem
Moin,
auf der Microsoft Support Seite habe ich folgenden ![]() "How To Read and Write BLOB Data by Using ADO.NET with Visual Basic .NET" gefunden.
Code:
Jetzt habe ich diesen folgendermaßen nach Delphi .NET übersetzt
...
Dim myRow As DataRow myRow = ds.Tables("MyImages").Rows(0) Dim MyData() As Byte MyData = myRow("imgField") Dim K As Long K = UBound(MyData) Dim fs As New FileStream _ ("C:\winnt\Gone Fishing2.BMP", FileMode.OpenOrCreate, _ FileAccess.Write) fs.Write(MyData, 0, K) fs.Close()
Delphi-Quellcode:
Jetzt hab ich nurnoch die Daten etwas angepasst, weil ich natürlich eine andere Tabelle verwende. Aber das Prinzip ist das selbe.
var
MyData: array of Byte; fs: FileStream; myRow: DataRow; K: LongInt; begin myRow := ds.Tables['MyTables'].Rows[0]; MyData := myRow['imgField']; //<-- hier sagt er 'Inkompatible Typen' !!? K := length(MyData); fs := FileStream.Create('C:\winnt\Gone Fishing2.BMP', FileMode.OpenOrCreate, FileAccess.Write); fs.write(MyData, 0, K); fs.close; end; In der Zeile in der die Daten auf MyData zugewiesen werden sollen gibt er die o.g. Meldung aus, dass die Typen inkompatibel seien. Was habe ich hier verkert gemacht? |
Re: VB.NET zu Delphi.NET Problem
sorry, *push*
|
Re: VB.NET zu Delphi.NET Problem
Guck Dir dazu lieber diesen Beitrag im MSDN mal an :
![]() Ist der gleiche Artikel, nur für C#. VB.NET hat einige Probleme im Bereich sauberer Programmierung. Wenn Du den C# - Code als Quelle nimmst, siehst Du deutlichst besser was da gemacht wird und wie das nach Delphi zu übersetzen ist. |
Re: VB.NET zu Delphi.NET Problem
Zu Anfang hatte ich auch den C# Code als Vorlage. Stieß aber auf das gleiche Prblem. Daher hab ich mir gedacht, schau ich mir das für VB an, da man das evtl. besser versteht. Nunja, auf jeden Fall stoße ich bei beiden Codes auf das selbe Problem. :?
|
Re: VB.NET zu Delphi.NET Problem
Du versuchst doch auch ein Object in einen array of byte zu boxen!
Wie soll denn das eine typensichere Sprache akzeptieren können? :gruebel: |
Re: VB.NET zu Delphi.NET Problem
Irgendwie kommt mir die Fragestellung bekannt vor.
Kann es sein, das diese hier jemand schon einmal gestellt hat? ![]() Was hindert dich daran das VB.NET Beispiel direkt zu übernehmen und in eine Assembly (Klassenbibliothek) auszulagern und diese dann nur einzubinden? Damit entfällt die Aufgabe der Portierung. |
Re: VB.NET zu Delphi.NET Problem
@Generalissimo
Der Beitrag war auch von mir :) Ich wollte die Frage nur nochmal auf eine andere Weise stellen, da ich bei der Assembly Geschichte nicht ganz durchgestiegen bin, bzw. ich die C# Unit nicht kompiliert bekommen habe. @Robert_G das habe ich mir ausch schon überlegt, aber im Beispiel für C# und VB gings wohl auch irgendwie :? |
Re: VB.NET zu Delphi.NET Problem
Zitat:
Zitat:
btw: Auch als Delphi.Net Entwickler sollte man C# lesen und schreiben können. ;) |
Re: VB.NET zu Delphi.NET Problem
Leider kann ich kein C#.NET, das kann doch keine Voraussetzung sein... bin froh das jetzt Delphi.NET langsam flüssiger geht :)
Ok, bei C# ist es ein Cast, bei VB gings aber ohne... Aber mal angenommen ich wolle das auf Delphi.NET umsetzten, so
Delphi-Quellcode:
gehts nicht. Ich hab mir da schon die wildesten Sachen aus den Fingern gesogen, bin aber zu keinem Ergebnis gekommen. Nen Tipp?
MyData := myRow['imgField'] as byte oder bytes oder byte() oder array of byte;
|
Re: VB.NET zu Delphi.NET Problem
Zitat:
Zitat:
Genau wie in Delphi32 ist der Delphi.Net Compilier einfach nicht in der lage zu kapieren, dass [array of WasWeißIch] == [array of WasWeißIch] ist. Du musst also diese Arbeit für den Compiler machen und so einen ollen Hilfstyp deklarieren:
Delphi-Quellcode:
type TMyByteArrayType = array of byte;
var MyData :TMyByteArrayType; begin MyData := myRow['dcoiqwd'] as TMyByteArrayType; end; |
Re: VB.NET zu Delphi.NET Problem
Wie du siehst hab ich selbst beim normalen Delphi noch nicht alles inne...
Da kann man mal sehen, was die Chefs so alles von Azubis im ersten Lehrjahr erwarten... :roll: Werd ich testen, ich hoffe es funzt, danke für die Unterstützung. |
Re: VB.NET zu Delphi.NET Problem
Würde dir trotzdem raten nebenbei auch C# und VB.NET dir anzuschauen.
Als Beispiel sei hier COM und die späte Bindung mit VB.NET genannt. |
Re: VB.NET zu Delphi.NET Problem
Klasse, es funktioniert :)
Jetzt muss ich das selbe noch für CLOBs machen, aber das kann ja jatzt nicht mehr so schwer sein. Thx guys! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz