![]() |
AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
Ich poste mal hier die Methoden, angefangen von der, die ich aufrufe:
Delphi-Quellcode:
Ich hoffe da ist alles dabei, was du sehen wolltest ...
ZQuery.FieldByName(Field).AsString;
function TDataSet.FieldByName(const FieldName: string): TField; begin Result := FindField(FieldName); if Result = nil then DatabaseErrorFmt(SFieldNotFound, [FieldName], Self); end; function TDataSet.FindField(const FieldName: string): TField; begin Result := FFields.FindField(FieldName); if (Result = nil) and ObjectView then Result := FieldList.Find(FieldName); if Result = nil then Result := FAggFields.FindField(FieldName); end; function TFields.FindField(const FieldName: string): TField; var I: Integer; begin for I := 0 to FList.Count - 1 do begin Result := FList.Items[I]; if WideCompareText(Result.FFieldName, FieldName) = 0 then Exit; end; Result := nil; end; function TField.GetAsString: string; begin Result := GetClassDesc; end; function TField.GetClassDesc: string; var I, L: Integer; S: string; begin S := ClassName; I := 1; L := Length(S); if S[1] = 'T' then I := 2; if (L-I >= 5) and (CompareText(Copy(S, L - 4, 5), 'FIELD') = 0) then Dec(L, 5); FmtStr(Result, '(%s)', [Copy(S, I, L + 1 - I)]); if not IsNull then Result := AnsiUpperCase(Result); end; ////////////////////////////////////// Und hier TFieldDefs ////////////////////////////////////// TFieldDefs = class(TDefCollection) private FParentDef: TFieldDef; FHiddenFields: Boolean; function GetFieldDef(Index: Integer): TFieldDef; procedure SetFieldDef(Index: Integer; Value: TFieldDef); procedure SetHiddenFields(Value: Boolean); protected procedure FieldDefUpdate(Sender: TObject); procedure ChildDefUpdate(Sender: TObject); procedure SetItemName(AItem: TCollectionItem); override; function GetFieldDefClass: TFieldDefClass; virtual; public constructor Create(AOwner: TPersistent); virtual; function AddFieldDef: TFieldDef; function Find(const Name: string): TFieldDef; procedure Update; reintroduce; { procedure Add kept for compatability - AddFieldDef is the better way } procedure Add(const Name: string; DataType: TFieldType; Size: Integer = 0; Required: Boolean = False); property HiddenFields: Boolean read FHiddenFields write SetHiddenFields; property Items[Index: Integer]: TFieldDef read GetFieldDef write SetFieldDef; default; property ParentDef: TFieldDef read FParentDef; end; |
AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
Zitat:
|
AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
Zitat:
Was gibt denn
Delphi-Quellcode:
für deine Stringfelder zurück?
ZQuery.FieldByName(Field).FieldType
Delphi-Quellcode:
uses TypInfo;
ShowMessage(GetEnumProp(ZQuery.FieldByName(Field), 'FieldType')); |
AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
Zitat:
Bitte entschuldigt die "späte" Antwort ;) Ich bekomme eine AV mit der Meldung: "Die Eigenschaft "FieldType" existiert nicht. |
AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
Unter Zeos heißt die Eigenschaft DataType und nicht FieldType. Datatype gibt dann einen Integer zurück. Anhand des Integers kann man dann bestimmen, welchen Type das Feld hat. Hier ein Beispiel :
Delphi-Quellcode:
Wie gesagt, ist nur aus einem Programm rauskopiert.
begin
case TMPQuery.Fields[IntZaehler].datatype of ftUnknown: begin sType := 'Unknown'; end; ftString: begin sType := 'String'; end; ftSmallint: begin sType := 'Smallint'; end; ftInteger: begin sType := 'Integer'; end; ftWord: begin sType := 'Word'; end; ftBoolean: begin sType := 'Boolean'; end; ftFloat: begin sType := 'Float'; end; ftCurrency: begin sType := 'Currency'; end; ftBCD: begin sType := 'BCD'; end; ftDate: begin sType := 'Date'; end; ftTime: begin sType := 'Time'; end; ftDateTime: begin sType := 'DateTime'; end; ftBytes: begin sType := 'Bytes'; end; ftVarBytes: begin sType := 'VarBytes'; end; ftAutoInc: begin sType := 'AutoInc'; end; ftBlob: begin sType := 'Blob'; end; ftMemo: begin sType := 'Memo'; end; ftGraphic: begin sType := 'Graphicc'; end; ftFmtMemo: begin sType := 'FmtMemo'; end; ftParadoxOle: begin sType := 'ParadoxOlee'; end; ftDBaseOle: begin sType := 'DBaseOle'; end; ftTypedBinary: begin sType := 'TypedBinary'; end; ftCursor: begin sType := 'Cursor'; end; ftFixedChar: begin sType := 'FixedChar'; end; ftWideString: begin sType := 'WideString'; end; ftLargeInt: begin sType := 'LargeInt'; end; ftADT: begin sType := 'ADT'; end; ftArray: begin sType := 'Array'; end; ftReference: begin sType := 'Reference'; end; ftDataSet: begin sType := 'DataSet'; end; ftOraBlob: begin sType := 'OraBlob'; end; ftOraClob: begin sType := 'OraClob'; end; ftVariant: begin sType := 'Variant'; end; ftInterface: begin sType := 'Interface'; end; ftIDispatch: begin sType := 'IDispatch'; end; ftGuid: begin sType := 'Guid'; end; end; |
AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
Hi.
Aber auch ein
Delphi-Quellcode:
bringt die gleiche AV.
ShowMessage(GetEnumProp(db.DBQuery.FieldByName('TITEL'), 'DataType'));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 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-2025 by Thomas Breitkreuz