![]() |
Delphi-Version: 5
Strings unter Linux ?? String[10]
rutsche gerade in eine weiteres Problem beim Portieren einer Anwendung auf LINUX
Delphi-Quellcode:
aString : String[25]; was geht denn hier schief ?
Delphi-Quellcode:
Error E2029 ';' expected but '[' found
|
AW: Strings unter Linux ?? String[10]
ShortStrings sind doch schon seit Ewigkeiten deprecated. Es ist also nicht verwunderlich, daß die unter den NextGen Compilern nicht mehr unterstützt werden.
|
AW: Strings unter Linux ?? String[10]
Vor allem da es den ShortString ausschließlich mit ANSI gibt, was dort sowieso fehlt. :zwinker:
![]() Lösung: statisches Array oder ein Record, wenn es wie ein Record/einfacher Typ (ohne Pointer) genutzt wird. |
AW: Strings unter Linux ?? String[10]
wenn z.b.
Delphi-Quellcode:
genutzt wird, dann muß man größere Umbauten vornehmen.
length(astring)
Ansonsten
Delphi-Quellcode:
Aber beachten, das ist nur ein Datencontainer!
tshortstring=packed record
Long:byte; text:array of {Byte oder 8Bit-Char} end; Die meisten Funktionen werden wahrscheinlich mit einem Fehler aussteigen. Gruß K-H |
AW: Strings unter Linux ?? String[10]
Zitat:
|
AW: Strings unter Linux ?? String[10]
wir haben dann in der MSSQL-Datenbank-Felder hierfür definiert wie
Delphi-Quellcode:
was mache ich denn hier wenn ich die SQL scripte nicht auch noch gleichzeitig anfassen will am besten ?
......, AName varchar(25) NULL, .....
|
AW: Strings unter Linux ?? String[10]
Wie "versorgst" Du denn die Scripte mit den entsprechenden Werten?
Per qry.ParamByName('Feldname').AsString? Per qry.FieldByName('Feldname').AsString? Oder ...? Du könntest bei der Zuweisung eine Längenprüfung machen. Bei den Datenbankkomponenten kann man doch (eigentlich) bei 'ner geöffneten Abfrage die Feldinformationen bekommen. Diese kann man dann für eine Längenprüfung bei einer Wertzuweiseung heranziehen. Ggfls. macht man beim Programmstart mal eine entsprechende Abfrage pro Tabelle ... und merkt sich die Felddefinitionen. Mit denen kann man dann 'ne Plausibilitätsprüfung / Längenprüfung realisieren. Eventuell gelingt es ja sie so dynamisch zu machen, dass bei Änderungen des Datentypes, der Länge von VarChar-Feldern ... im Programm diese Änderungen automatisch erkannt werden und berücksichtigt werden (ohne nochmal an den Programmquelltext zu müssen). Oder die passenden Infos aus dem INFORMATION_SCHEMA auslesen und dann bei der Wertezuweisung berücksichtigen ... Zeig' uns doch mal einen Auszug aus Deinem bisherigen Quelltext, bei dem das Problem momentan konkret auftritt. Eventuell kann man dann etwas zielgerichteter weiterdenken und Hilfestellung geben. |
AW: Strings unter Linux ?? String[10]
Zitat:
Delphi-Quellcode:
kann in der Regel die Daten aller varchar(nn) Konstrukte aufnehmen (sogar auch nvarchar!). Das hat sogar den Vorteil, daß bei einer Änderung in der Datenbank der Delphi-Code nicht auch noch geändert werden muss. Dafür bietet FireDAC auch eine entsprechende Option an, die statische String-Felder zur Laufzeit in der Größe an die Datenbank anpasst.
string
|
AW: Strings unter Linux ?? String[10]
Das Problem ist wohl nicht, dass ein String "zu kurz" sein könnte, sondern eher, dass der String "mehr" enthält, als das Datenbankfeld aufnehmen kann.
Man muss halt schauen, welche Möglichkeiten einem die Datenbankkomponenten bieten, hier auf Konflikte zu reagieren bzw. erst garkeine Konflikte aufkommen zu lassen. |
AW: Strings unter Linux ?? String[10]
Zitat:
Bei dir ist "text" ein Pointer und da muß man eventuell so Einiges beachten. (leider kann man mit den Generics nicht de größe dieses Arrays definieren, womit sich damit nichts dynamisches für Length 1..255 erzeugen lässt) |
AW: Strings unter Linux ?? String[10]
Pardon :oops:
muß natürlich
Delphi-Quellcode:
heißen.
text:array [1..255] of 8BitTyp
gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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