Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Auf XE3 programmiert, auf 5 solls laufen. (https://www.delphipraxis.net/172491-auf-xe3-programmiert-auf-5-solls-laufen.html)

Getox 7. Jan 2013 10:39

Auf XE3 programmiert, auf 5 solls laufen.
 
Hallo,

Ich habe vor knapp 4 Wochen angefangen Delphi zu programmieren. Dazu habe ich die Testversion von XE3 verwendet. Heute ist die Probezeit abgelaufen und ich habe nur noch ein altes Delphi 5 zur verfügung und muss damit jetzt irgendwie zurande kommen..

Problem ist erstmal:

droj Datei wird nicht mehr erkannt scheinbar. Wenn ich ein Projekt öffnen will, werden die dproj Dateien ausgeblendet und ich kann nur die dpr öffnen. Dann wird auch nicht meine Form1 geöffnet, sondern die Datei, in den die Forms erstellt werden und die Anwendung ausgeführt wird.

Dann muss ich plötzlich jede einzelne unit die ich verwende über Datei -> öffnen aufmachen...

Naja das waren nur komfortprobleme...

Wo mein Problem anfängt, ist direkt beim ersten Ausführen meines Programmes:
Rot markierte zeile: "Vcl.Forms". "File not found: 'Vcl.dcu'".

OK... zeile auskommentiert:
"File not found; 'Winapi.dcu'"

egal auch auskommentiert:
"Identifier redeclared: 'System'"

Ich kann nix machen und brauch hilfe :roll:

Uwe Raabe 7. Jan 2013 10:44

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Erspar dir den Ärger und mach das Projekt in D5 neu.

Ich kann allerdings nicht glauben, daß jemand wirklich davon ausgeht, daß ein unter XE3 (2012) entwickeltes Programm ohne Probleme under D5 (1999) zum Laufen zu bringen ist.

Übrigens: umgekehrt wäre das wahrscheinlich kein Problem gewesen.

greenmile 7. Jan 2013 10:46

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1198073)
Ich kann allerdings nicht glauben, daß jemand wirklich davon ausgeht, daß ein unter XE3 (2012) entwickeltes Programm ohne Probleme under D5 (1999) zum Laufen zu bringen ist.

Wieso sollte das nicht funktionieren bzw. zu sehr problematisch sein? Wenn man die DFM als Text speichert gehen ev. einige Properties verloren, ist halb so wild. In den Units kann man die Befehle, die D5 (noch) nicht kennt, mit Hilfe des WWW nachbilden. Arbeite hier immer mit D5 / XE3. D5 ist mir immer noch am liebsten wenn ich schnelle, aber kleine EXE'n brauche. Und ich kenne die Bugs in D5 :)

@Getox:
Entferne bei VCL.Forms einfach das VCL., so dass im Beispiel nur noch Forms übrig bleibt. D5 kannte diese Nomenklatur noch nicht, funktioniert also fast bei allen Units bis auf Variants, die kennt D5 auch nicht. PAS ist auch nicht wild, problematisch könnte es bei den DFM's werden, wenn die nicht als Text gespeichert wurden.

Getox 7. Jan 2013 10:57

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
OK... hab jetzt alles Weggelöscht.. also "VCL." und so weiter... und dann DAS:

[Fatal Error] SQLiteTable3.pas(1): Line too long (more than 1023 characters)

:cry: Der Tag fängt wundervoll an... Ja das ist eine Datei aud dem SQLite Wrapper.

greenmile 7. Jan 2013 11:01

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Gibt es die nicht für D5?

Uwe Raabe 7. Jan 2013 11:04

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von greenmile (Beitrag 1198074)
Zitat:

Zitat von Uwe Raabe (Beitrag 1198073)
Ich kann allerdings nicht glauben, daß jemand wirklich davon ausgeht, daß ein unter XE3 (2012) entwickeltes Programm ohne Probleme under D5 (1999) zum Laufen zu bringen ist.

Wieso sollte das nicht funktionieren bzw. zu sehr problematisch sein?

Wenn ich in XE3 nur so programmiere, daß D5 damit umgehen kann, OK. Aber dann verzichte ich ja auch bewusst auf einen Haufen neuer Sprachfeatures. Warum dann aber überhaupt der Ansatz mit XE3?

greenmile 7. Jan 2013 11:07

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Ich entwickle ja nicht für XE3/D5 parallel, zur Not funktioniert es aber.
Es gibt Dinge die mache ich in D5, Dinge die mache ich in XE3.

Bernhard Geyer 7. Jan 2013 11:08

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von greenmile (Beitrag 1198074)
... problematisch könnte es bei den DFM's werden, wenn die nicht als Text gespeichert wurden.

Vor allem bei den Properties die es noch nicht in D5 gab aber von XE3 in die DFM geschrieben werden.
Compilieren geht Problemlos aber beim Öffnen des Formular kracht es ...

Getox 7. Jan 2013 11:10

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Dazu kann ich nur sagen, dass es nicht meine Entscheidung war, mit XE3 anzufangen und dann auf 5 umzusteigen.

Ja ich werde vermutlich viele Features vermissen, aber da muss ich nun durch und ich muss mich nun irgendwie mit meiner neuen Situation arrangieren.

Ich war noch mal auf der Seite von Tim Anderson, wegen dem Wrapper und ich finde nur eine Datei zum runterlsaen und das ist die, welche bereits von mir in Benutzung war.

Ja ich wurde auch schon drauf hingewiesen, dass ich einige fehlerhafte Properties in meinem Stringgrid habe...

greenmile 7. Jan 2013 11:12

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von Getox (Beitrag 1198083)
Ja ich wurde auch schon drauf hingewiesen, dass ich einige fehlerhafte Properties in meinem Stringgrid habe...

Normalerweise löscht man die dann aus der DFM und gut is'.
XE3 hat nicht nur Vorteile, ich kann das durchaus nachvollziehen.

Bernhard Geyer 7. Jan 2013 11:19

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von greenmile (Beitrag 1198084)
Zitat:

Zitat von Getox (Beitrag 1198083)
Ja ich wurde auch schon drauf hingewiesen, dass ich einige fehlerhafte Properties in meinem Stringgrid habe...

Normalerweise löscht man die dann aus der DFM und gut is'.

Und vergisst das bei jeder 5ten Lieferung. Ein Quell von Fehlermeldungen die man übersieht.
Solche Händischen Aktionen welche nicht durch einfache Compilierungen offensichtlich werden wird man sehr oft übersehen bzw. verursachen letztendlich realtiv viel Zeitaufwand.

p80286 7. Jan 2013 12:10

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von Getox (Beitrag 1198077)
OK... hab jetzt alles Weggelöscht.. also "VCL." und so weiter... und dann DAS:

[Fatal Error] SQLiteTable3.pas(1): Line too long (more than 1023 characters)

:cry: Der Tag fängt wundervoll an... Ja das ist eine Datei aud dem SQLite Wrapper.

Wenn es sich um eine Const handelt könntest Du damit erfolgreicher sein:
Delphi-Quellcode:
const
cMyText='bla bla max 255?'+
        'bla bla max 255?'+
        'bla bla max 255?'
Gruß
K-H

Getox 7. Jan 2013 12:19

Ich habe jetzt mit Hilfe den Wrapper so hinbekommen, dass die Zeilen nicht mehr zu lang sind.

Das hatte mit dem Format der Quelldatei zu tun... Da gibt es ja irgendwie #13 und #10. Linux benutzt nur eins, Mac das andere und Windows beide um Absätze zu machen (wenn ich es richtig verstanden habe).

Das habe ich im Notepad++ geändert bekommen (Bearbeiten -> Format Teilenende -> Konvertiere zu Windows(CR + LF)).

Nun habe ich auch noch Unterstützung bekommen, indem mein Wrapper von SQLite noch zum Teil umgeschrieben wurde und ich begebe mich jetzt auf die Suche nach UTF8Encode() für Delphi5. Mal sehen, ob ich da fündig werde. Wenn ich noch ein Problem habe, werde ich wieder schreiben :)

Danke aber vorerst, dass ihr euch mit meinem Problem auseinandersetzt.

Bernhard Geyer 7. Jan 2013 12:26

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von Getox (Beitrag 1198095)
... und ich begebe mich jetzt auf die Suche nach UTF8Encode() für Delphi5 ...

In der JCL (AFAIK JclUnicode.pas) gibts da was.

Getox 7. Jan 2013 14:36

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
So... ich habe nun herausgefunden, dass JCL wohl was "Externes" ist, dass man zusätzlich installieren muss. nach einiger Zeit habe ich nun auch geschafft eine JCL Version zu besorgen, welche mit Delphi5 Läuft. JVCL 3.37 war wohl die letzte Version die unter Delphi5 lief und darin war auch ne funktionierende Version von JCL.

Jetzt bin ich aber leicht verwirrt mit dem ganzen String, WideString, UTF8 und keine Ahnung. Mit diesem Thema habe ich mich nicht ganz befasst.

Ich habe nun in meiner Datei vom SQL Wrapper erstmal die JclUnicode unter USES hinzugefügt und bin nun an der Stelle an der vorher stand:

Delphi-Quellcode:
function StrToUTF8(const S: WideString): AnsiString;
begin
  Result := UTF8Encode(S);
end;
Die Funktion UTF8Encode gib es nicht und will ich ja durch die entsprechende Funktion der JCL ersetzen. Aufgrund mangelnden Wissens, was diese ganzen Textformate angeht, stehe ich etwas aufm Schlauch. Welche Funktion aus der JCLUnicode ist denn die, welche ich benötige?

stahli 7. Jan 2013 14:55

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Denke nochmal über den Tipp von Uwe nach (Projekt im Rahmen von D5 neu aufsetzen).

Vielleicht kannst Du auch irgendwo ein günstiges D2009 bekommen - dort wäre zumindest schon Unicode mit dabei (wenn Du es wirklich brauchst).

Getox 7. Jan 2013 15:03

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Das Problem vor dem ich stehe, dass ich mit SQLite arbeite. Dafür nutze ich einen Wrapper und der geht nur mit diesem Unicodegedöns.

Wenn ich das Programm neu schreibe, kann ich aus diesem Grunde immernoch keine Datanbank anlegen, benutzen oder sonst was...

sh17 7. Jan 2013 22:42

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Warum soll es denn eigentlich auf D5 laufen? Aus Kostengründen? In XE3 schien ja alles gut geklappt zu haben. Klang oben zumindest so. Für die Stunden, die Du jetzt mit dem rumgefrickel Zeit verlierst, kannst Du Dir auch XE3 Pro zulegen.

Bernhard Geyer 7. Jan 2013 23:03

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von Getox (Beitrag 1198108)
Dafür nutze ich einen Wrapper und der geht nur mit diesem Unicodegedöns.

SQLite ist nunmal ein DBMS das die Daten in so einem Uniocdegedöns ablegt

Ach ja: Müsste nicht ZEOS auch SQLite unterstützen? Ist evtl. einfacher damit zu arbeiten. Die Frage ist nur ob du die neustes Version noch verwenden kannst oder auf Alte Version zurückspringen musst.


Kannst du nicht mindestens auf D7 hochgehen? Diese müsste noch von mehr Bibliotheken unterstützt werden so das du keine Antiken Versionen einsetzen musst.

EgonHugeist 7. Jan 2013 23:47

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Soweit ich weiß haben wir alle defines in Zeos7 für Compiler, älter als D7 rausgeschmissen. Außerdem ist ist das UTF8Encode/UTF8Decode da auch schon überall drin.

Es gab da eine kurze Absprache, ob irgendwer noch Interesse an solchen Compilern haben könnte. Das gleiche Spiel mit FPC2.2../Kylix

Mit 6.6.6 könnte das alles noch gehen, du bräuchtest jedoch irgendwelche UTF8 oder WideString Componenten wie TNT o.ä..

Altenativen für:

uses windows;

UTF8Decode

Delphi-Quellcode:
function AnsiToWide(const S: AnsiString): WideString;
var
  l: Integer;
begin
  l := MultiByteToWideChar(CP, 0, PAnsiChar(@s[1]), - 1, nil, 0); //Checkout the Result-Lengh
  if l = 0 then Exit;
  SetLength(Result, l - 1);
  MultiByteToWideChar(65001, 0, PAnsiChar(@s[1]),
    - 1, PWideChar(@Result[1]), l - 1); //Convert Ansi to Wide with supported Chars
end;
UTF8Encode:

Delphi-Quellcode:
function WideToAnsi(const ws: WideString): AnsiString;
var
  L: Integer;
begin
  l := WideCharToMultiByte(65001,0, @ws[1], - 1, nil, 0, nil, nil); //Checkout the result length
  if l = 0 then Exit;
  SetLength(Result, l - 1); //SetResult Length
  WideCharToMultiByte(65001,0, @ws[1], - 1, @Result[1], l - 1, nil, nil); // Convert Wide down to Ansi
end;
Du kannst die CP65001(UTF8) auch mit 1252 austauschen (dann aber dwFlags anstatt 0 mit WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR austauschen), somit WideToAnsi oder AnsiToWide erstellen, was deine Controls dann darstellen können.

Habe das alles so bei Zeos reingebröselt und funzt wunderbar. Jedoch werden unter CP1252 alle nicht unterstützen Bytesequenzen zu '?' umgewandelt.

Gruß Michael

sahimba 8. Jan 2013 07:34

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von stahli (Beitrag 1198107)
Vielleicht kannst Du auch irgendwo ein günstiges D2009 bekommen

Ich hätte eines zu verkaufen ;) http://ddobjects.de/delphi-2007-and-2009-for-sale

LG

Getox 8. Jan 2013 09:57

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Zitat:

Zitat von sh17 (Beitrag 1198144)
Warum soll es denn eigentlich auf D5 laufen? Aus Kostengründen? In XE3 schien ja alles gut geklappt zu haben. Klang oben zumindest so. Für die Stunden, die Du jetzt mit dem rumgefrickel Zeit verlierst, kannst Du Dir auch XE3 Pro zulegen.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1198147)
Kannst du nicht mindestens auf D7 hochgehen? Diese müsste noch von mehr Bibliotheken unterstützt werden so das du keine Antiken Versionen einsetzen musst.

Zitat:

Zitat von sahimba (Beitrag 1198158)
Zitat:

Zitat von stahli (Beitrag 1198107)
Vielleicht kannst Du auch irgendwo ein günstiges D2009 bekommen

Ich hätte eines zu verkaufen ;) http://ddobjects.de/delphi-2007-and-2009-for-sale

LG

Ich hatte die Testversion von XE3 und nun habe ich nur noch das 5er. leider stehen mir keine anderen Alternativen zur Verfügung.

Ich bin grade am erlernen dieser Programmiersprache.Da ist 1000 Euro für nen XE3 Pro etwas mit Kanonen auf Spatzen geschossen finde ich. Auch das angebot mit dem 2009er finde ich nett, aber 200 Euros sind auch ne Stange Geld. Was nutzt die schönste IDE, wenn man am Ende des monats verhungert ist?

Dass ist in meinen Augen eh das größte Problem von Delphi. Wenn man als Neuling vor der Wahlsteht, ob man eine IDE einer beliebigen anderen Sprache gratis runterlädt oder 200 Euro auf den Tisch latzt, um Delphi zu lernen, kann man schon fast erraten, was dieser wählen wird. ich persönlich bin nunmal drauf angewiesen speziell Delphi zu lernen, aber wenn dies nicht so wäre, würde ich umgehend eine ander Sprache wählen, wo ich weniger probleme, bei überhauptkeinen Kosten habe. Zudem hat man vermutlich mit weiter verbreiteten Sprachen bessere Berufsaussichten, als mit Delphi - wo eh die Mehrheit der Leute nicht auf dem aktuellen stand ist und noch denkt, dass Delphi unter Borlands Führung im sterben liegt.

sh17 8. Jan 2013 10:59

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Mit anderen Worten, Du musst Delphi und SQLite verwenden lernen, bekommst aber noch kein Geld, hast aber eine Aussicht auf einen Auftrag/Job mit Delphi und SQLLite?

Getox 8. Jan 2013 11:21

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Ich mache ein Praktikum um mich auf meine bevorstehende Ausbildung vorzubereiten. Ich muss Delphi verwenden, aber es lohnt sich wohl nicht, mir eine eigene Lizens zu kaufen, da ich auch noch in andere Abteilungen (mit anderen Sprachen) reinschnuppern werde.

Mein Ziel ist es, möglichst viel in eigener Arbeit zu erlernen, um möglichst schnell auch mal sinnvoll einsetzbar zu sein.

Dabei ist es mit persönlich auch nicht wichtig, welche Sprache ich lerne... Programmieren ist ja nicht ob ich jetzt schreibe "a := 1" oder "a = 1", programmieren ist meiner Meinung nach diese spezielle Denkweise, das analysieren von Problemen und so weiter... Das ist wie bei echten Sprachen. Ob ich jetzt sage "Ich mag Pizza" oder "I like Pizza" ist zwar eine andere Sprache, aber der selbe Sinn. Wenn ich aber nicht weis, dass es Pizza gibt, kann ich mit beiden Sätzen nix anfangen. Also lerne ich eine Sprache und wenn ich an eine andere Sprache komme, brauche ich nur suchen, wie bekannte Dinge in anderen Sprachen geschrieben werden.

Zu diesem Lerneffekt zähle ich auch, dass ich einige Dinge einbaue, die über das hinausgehen, was ich eigentlich machen soll. So habe ich zum beispiel meine Datenbank eingebaut, obwohl das Programm ursprünglich nur so aussehen sollte, als wenn es was können würde. Aber ich dachte "Hm, programmiere ich es so, dass es was kann" und so habe ich wieder ettliche Dinge gelernt, wie ich vorher nicht kannte und auf die ich nun immer wieder zurückgreifen kann. Das Problem ist jetzt einfach, dass ich an meinem Programm nicht weiter arbeiten kann, weil ich die IDE wechseln musste und ich hab doch noch sooo viele Ideen :(

Vielleicht mag der ein oder andere sich nun fragen, warum ich dann so viele fragen im Forum stelle. Ich versuche immer erst alleine durch Google auf die Lösung zu kommen, danach frage ich im Forum (wenn ich über einen gefühlt sehr großen zeitraum nicht weitergekommen bin) und wenn ich da dann auch nicht auf eine lösung komme, ziehe ich es in Betracht einen Arbeitskollegen bei seiner Arbeit zu stören.

Zum einen möchte ich hier möglichst wenig Leuten zur Last fallen - wenn ich schon zur Zeit keinen wirklichen Nutzen habe und zum anderen verstehe ich das geschriebene Wort oft besser als das gesprochene, da ich Teile mehrfach lesen kann und länger zeit habe über den Sinn nachzudenken, als wenn ich nun in einem normalen Gespräch bin.

Medium 8. Jan 2013 18:55

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
Es gibt noch Junge Menschen, bei denen man das Gefühl bekommen dürfte, mit einer Einstellung das Richtige getan zu haben! :love: Erstmal danke für die Aufhellung meines Abends, Getox ;)

Zum Problem an sich, würde ich allerdings auch fast sagen: Düster. Delphi 5 ist leider einfach schon so dermaßen veraltet, dass es noch kaum wer berücksichtigt. Die Suche und Versuche deine XE3 Projekte mit allen Fremdkoponenten dort hin zu pressen dürfte in sehr viel Liebesmüh und Rumprobieren und Hinbiegen enden. Das hat zwar sicherlich auch einen ziemlichen Lerneffekt, da man zwangsweise mit diversen Internas in Berührung kommt, für das was du "sn sich" aber wohl willst dürfte das eher hinderlich sein.

Stehst du bereits in Kontakt mit einem konkreten Arbeitgeber? Wenn ja, würde ich dort mal freundlich nachfragen, ob sie dir - wenn auch nur bis zum Zeitpunkt deines Eintritts in den Betrieb - eine aktuellere Delphi Version borgen würden. Ich kann mir kaum vorstellen, dass man solches Engagement leichtfertig ausschlagen würde. Die Alternative würde ich sonst auch wirlich im Neuschreiben in D5 fast von der Pieke an sehen, und dabei sich auf Bordmittel beschränken, weil es die meisten Komponenten wohl dafür nicht mehr oder nur reingefrickelt gibt. Das dürfte leider nur sehr weit vom späteren Arbeitsalltag entfernt sein.

stahli 8. Jan 2013 19:16

AW: Auf XE3 programmiert, auf 5 solls laufen.
 
@Getox

Respekt für Haltung :thumb: Finde ich echt super.

Letztlich ist es eine Frage in welchem Bereich Du mal arbeiten wirst, welche Arbeitsumgebung und Sprache Du dann intensivierst.
Delphi/Pascal ist m.E. am verständlichsten und übersichtlichsten - aber das ist Geschmachssache.

Zur Last fällst Du hier sicher keinem. Aber ich gebe Medium recht, es wird schwierig sein, mit D5 noch viel Unterstützung bei spezielleren Fragen zu erhalten.
WENN Du D5 nutzt, dann würde ich AUSNAHMSWEISE erst mal mit der BDE und DBase oder Paradox arbeiten.
Um ein paar Erfahrungen zu sammeln taugt das allemal.

Irgendwelche für D5 außergewöhnlichen Dinge zu nutzen wird wohl so viele Probleme bereiten, dass Du nur frustriert wirst...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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