Hi zusammen
Hmmm....
2 Versionen der Prozedur, dasselbe Ergebnis:
Delphi-Quellcode:
procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
var Tabelle : System.Data.DataTable; i: integer; StriBu: StringBuilder;
Zeile: TableRow; Zelle : TableCell; TZ,j: Integer; cRow:DataRow; cCol:DataColumn;
CreateDate,ZellShow,ZellText,ZellInhalt,HeVa :System.String;
begin
BdpDataAdapter1.Active:=True;
BdpDataAdapter1.Fill(Dataset1);
Tabelle := Dataset1.Tables[0];
For j := 0 to Tabelle.Rows.Count-1 do begin
cRow := Tabelle.Rows[j];
For i := 0 to Tabelle.Columns.Count-1 do begin
cCol := Tabelle.Columns[i];
if cCol.ColumnName='Content_ID' then
ZellInhalt := cRow[i].ToString;
if cCol.ColumnName='Text' then begin
HeVa := cRow[i].ToString;
StriBu := Stringbuilder.Create(cRow[i].ToString);
ZellText := StriBu.Append(HeVa).ToString;
end;
if cCol.ColumnName='Visible' then
ZellShow := cRow[i].ToString;
if cCol.ColumnName='Edit_Date' then
CreateDate := cRow[cCol.Ordinal].ToString;
Label1.Text := CreateDate;
Label2.Text:= ZellShow;
Label3.Text := Zelltext;
Label4.Text := ZellInhalt;
Listbox1.Items.Add(cCol.ColumnName.ToString + ' = '+ cRow[cCol.Ordinal].ToString);
end;
end;
Contra
Delphi-Quellcode:
procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
var Tabelle : System.Data.DataTable; i: integer; StriBu: StringBuilder;
Zeile: TableRow; Zelle : TableCell; TZ,j: Integer; cRow:DataRow; cCol:DataColumn;
CreateDate,ZellShow,ZellText,ZellInhalt:System.String;
begin
BdpDataAdapter1.Active:=True;
BdpDataAdapter1.Fill(Dataset1);
Tabelle := Dataset1.Tables[0];
For j := 0 to Tabelle.Rows.Count-1 do begin
cRow := Tabelle.Rows[j];
For i := 0 to Tabelle.Columns.Count-1 do begin
cCol := Tabelle.Columns[i];
if cCol.ColumnName='Content_ID' then
ZellInhalt := cRow[i].ToString;
if cCol.ColumnName='Text' then
ZellText := cRow[i].ToString;
if cCol.ColumnName='Visible' then
ZellShow := cRow[i].ToString;
if cCol.ColumnName='Edit_Date' then
CreateDate := cRow[cCol.Ordinal].ToString;
Label1.Text := CreateDate;
Label2.Text:= ZellShow;
Label3.Text := Zelltext;
Label4.Text := ZellInhalt;
Listbox1.Items.Add(cCol.ColumnName.ToString + ' = '+ ZellText);
end;
end;
BdpDataAdapter1.Active:=False;
Zur Erinnerung:
Zitat:
Delphi-Quellcode: markieren
ZellText := cRow[cCol.Ordinal].ToString;
Mit dieser Zeile lese ich in einem DataSet ein Feld aus, das aus einer
Access-Datenbank stammt und da als Memo deklariert ist. Dazu verwende ich die Bdp-Komponenten.
In der Datenbank habe ich mittlerweile die
Unicode-Kompression für dieses Feld abgeschaltet. Trotzdem erhalte ich bei einem Probelauf die Testausgabe "System.Char[]" anstelle des tatsächlichen Textes.
Andere Felder, die in der Datenbank als "Text" deklariert sind, werden korrekt ausgegeben.
Zitat:
Der Wert des Items in der DataRow ist ein Char Array, aber ein Char Array ist nur ein Array und wird seine Chars nicht als String ausgeben wenn man ToString auf ihn ausführt.
Meiner erster Versuch war, eine Char-Array-Variable zu deklarieren und dieser den Wert von cCol.Columns[i] zuzuweisen - interessant ist, dass der Compiler meckerte, dass String und Char-Array nicht kompatibel wären. Da die Variable als Char-Array deklariert war, ist klar, wo der String enthalten ist.
Das Problem ist also weiterhin ungelöst.
Gruss
Delbor