AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism VB.NET zu Delphi.NET Problem
Thema durchsuchen
Ansicht
Themen-Optionen

VB.NET zu Delphi.NET Problem

Ein Thema von vsti · begonnen am 17. Mär 2005 · letzter Beitrag vom 21. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#1

VB.NET zu Delphi.NET Problem

  Alt 17. Mär 2005, 15:57
Datenbank: Interbase • Version: 6 • Zugriff über: Borland Data Provider
Moin,

auf der Microsoft Support Seite habe ich folgenden Code für Visual Basic .NET zum Thema
"How To Read and Write BLOB Data by Using ADO.NET with Visual Basic .NET"
gefunden.


Code:
...
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()
Jetzt habe ich diesen folgendermaßen nach Delphi .NET übersetzt

Delphi-Quellcode:
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;
Jetzt hab ich nurnoch die Daten etwas angepasst, weil ich natürlich eine andere Tabelle verwende. Aber das Prinzip ist das selbe.

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?
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#2

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 13:35
sorry, *push*
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.610 Beiträge
 
#3

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 14:06
Guck Dir dazu lieber diesen Beitrag im MSDN mal an : klick.

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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#4

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 14:20
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.
Thorsten
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 14:25
Du versuchst doch auch ein Object in einen array of byte zu boxen!
Wie soll denn das eine typensichere Sprache akzeptieren können?
  Mit Zitat antworten Zitat
Generalissimo

Registriert seit: 28. Aug 2003
187 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 14:27
Irgendwie kommt mir die Fragestellung bekannt vor.

Kann es sein, das diese hier jemand schon einmal gestellt hat?

Alter Beitrag

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.
  Mit Zitat antworten Zitat
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#7

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 14:35
@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
Thorsten
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 14:40
Zitat von vsti:
@Robert_G
das habe ich mir ausch schon überlegt, aber im Beispiel für C# und VB gings wohl auch irgendwie
Stimmt doch gar nicht!
Zitat:
Code:
MyData = (byte[])myRow["imgField"];
Das sieht mir wie ein cast auf byte[] aus.

btw: Auch als Delphi.Net Entwickler sollte man C# lesen und schreiben können.
  Mit Zitat antworten Zitat
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#9

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 14:48
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

MyData := myRow['imgField'] as byte oder bytes oder byte() oder array of byte; gehts nicht. Ich hab mir da schon die wildesten Sachen aus den Fingern gesogen, bin aber zu keinem Ergebnis gekommen. Nen Tipp?
Thorsten
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: VB.NET zu Delphi.NET Problem

  Alt 18. Mär 2005, 15:07
Zitat von vsti:
Leider kann ich kein C#.NET, das kann doch keine Voraussetzung sein...
Doch ist es, ob's dir gefällt oder nciht. Von den 0,000001% Delphi.Net Entwicklern im .Net Zoo wirst du wohl auch nur 0,00001% aller Code beispiele finden können.

Zitat von vsti:
MyData := myRow['imgField'] as byte oder bytes oder byte() oder array of byte;
Das kann doch auch nicht gehen.
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
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