Autor Beitrag
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1508
Erhaltene Danke: 211


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: So 05.03.17 13:34 
Hallo Programmierfreunde!

Zur Zeit stehe ich wieder vor dem Problem, Nicht-Pascal-Quelltext zum Laufen zu bringen, diesmal Java.

Es geht um diese Datei, ich hänge sie der Einfachheit halber einfach hier als komprimiertes Archiv an.

In ein bestehendes Java-Projekt, das in Eclipse (neon.2) übersetzt und ausgeführt wird, bekam ich diese Datei nicht erfolgreich eingebunden (in den Ordner source kopiert, dann "refresh", aber schon dann wird das Projekt nicht mehr compiliert, obwohl noch gar kein Unterprogramm dieser Java-Datei aufgerufen wird.

Also als nächstes ein neues Java-Projekt erstellt und dann die angehängte Datei dort per Drag-and-Drop nach source (in der Eclipse-IDE) hineinkopiert, das läßt wenigstens den Inhalt der Datei erscheinen (na gut, soweit war ich beim bestehenden Projekt auch schon). Die Just-in-Time-Syntaxprüfung mosert einiges an der Datei herum, jedoch scheint das - jedenfalls in der Mehrzahl - nichts bedeutsamen zu sein, denn der Sourcecode wird kaum oder gar nicht fehlerhaft sein.

Kurzum, weiß jemand, wie man diese Datei erfolgreich in ein Java-Projekt eingebunden bekommt?

Falls ich wenigstens das schaffen würde, wäre die nächste Herausforderung, eine Liste zu erstellen, zu füllen und an die Hauptprozedur zu übergeben.

Danke für Eure Geduld und Mühe!

Beste Grüße

Delphi-Laie
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Delphi-Laie am So 05.03.17 21:19, insgesamt 1-mal bearbeitet
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1844
Erhaltene Danke: 333

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: So 05.03.17 18:27 
Guten Abend Delphi-Laie,

die Datei, die du hast, beinhaltet ein Package mit einer Klasse "Order". Es dürfte sich über "Öffnen" importieren lassen.
Du kannst es auch etwas umständlicher machen, indem du im bestehenen leeren Projekt, ein neues Package "Order" erstellst.
Im Anschluss erstellst du eine Klasse mit dem Namen "Order" und verbindest diese mit dem erstellten Package.
Nur noch Copy und Paste des eigentlichen Quelltextes, den Package-Namen anpassen auf "Order" und schon solltest du es kompilieren können. :D

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: Delphi-Laie
Delphi-Laie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1508
Erhaltene Danke: 211


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: So 05.03.17 22:00 
Vielen Dank, Frühlingsrolle! Ich schätze und befürchte, daß ich es nicht hinbekommen werde.

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Guten Abend Delphi-Laie,

die Datei, die du hast, beinhaltet ein Package mit einer Klasse "Order". Es dürfte sich über "Öffnen" importieren lassen.


Hier geht nämlich schon die erste Frage los: Inwiefern "öffnen"? "Open File"? Kann ich tun, dann erscheint ein weiteres Editfenster im Reiter. Ist dieses aufgerufen, und drücke ich dann auf den weißen Pfeil auf grünem Untergrund ("Run main"), fragt er mich nach irgendeinem zweier "Ant Build"s (Ameisen? Was, zum Teufel, haben die damit zu tun?), aber keines davon bringt Erfolg. Diese Datei "order" enthält ja auch nur eine Klasse, keine "main"-Prozedur, insofern kann auch nichts passieren. Soviel über C & Co. weiß sogar ich.

Ich kopiere diese order.java-Datei in das source-Verzeichnis des schon bestehenden Projektes, refreshe, "order" erscheint in der Liste der source-Dateien und versuche wenigstens, in der "main.java" bei den anderen imports mit "import order;" eine Verbindung herzustellen, aber warum sollte es so klappen wie in Delphi?! Nein, tut es natürlich nicht: "The import order cannot be resolved". Edit: Mit "import order.java" scheint er doch wenigstens an den Inhalt der Datei zu gelangen, kompilieren tut aber dennoch nichts.

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Du kannst es auch etwas umständlicher machen, indem du im bestehenen leeren Projekt, ein neues Package "Order" erstellst.
Im Anschluss erstellst du eine Klasse mit dem Namen "Order" und verbindest diese mit dem erstellten Package.
Nur noch Copy und Paste des eigentlichen Quelltextes, den Package-Namen anpassen auf "Order" und schon solltest du es kompilieren können. :D


Tja, so einfach ist es....Java ist ja sooo einfach (versucht jedenfalls ein Softwaretrainer im Internet, Leuten Appetit auf seine Kurse zu machen)....Ich bekomme nicht mal ein leere, beschreibbares Projekt in der Eclipse hin. Es ist eben nichts, sich auf unbekannte Terrains ohne Sprachkenntnisse zu wagen. Doch ich werde mich nicht monatelang mit Java herumquälen, nur, um diese eine Klasse zum Laufen zu bringen. Wie Leute behaupten können, wie ungemein wichtig und hilfreich Vorkenntnisse sind, ist mir auch eher schleierhaft. Trotz inzwischen fast 30 Jahren (!!) Programmiererfahrung - zugegebenermaßen fast ausschließlich anfangs in BASIC, später Pascal & Co. - stehe ich wiederum fast wie ein Schweinchen vor einem Uhrwerk, wie ein Analphabet da. Naja, ich kann Euch nicht ewig und über Gebühr zu beanspruchen wagen, vielleicht finde ich ja noch eine gute Anleitung; bisher fand ich nur solche, die mir Bedingungen und Schleifen beibringen möchten, aber so etwas suche ich nicht.

Nochmals besten Dank für Deine Mühe!

Noch ein Edit: Die Eclipse bietet für diese ach so einfache Programmiersprache bereits ein mehrstufiges Tutorial an, um so etwas banales wie ein einfaches "Hello World"-Programm zu erstellen. Ich bleibe dran...
Delphi-Laie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1508
Erhaltene Danke: 211


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: So 05.03.17 23:08 
So, Update: "Irgendwie" habe ich es geschafft, ein "Hello World"-Projekt zu beginnen, dort eine Order-Package und eine Order-Klasse zu erstellen sowie den relevanten Quellcode der Order.java-Datei in die Order-Klasse zu kopieren. Das Ergebnis meiner Mühen findet sich im Anhang.

Ich verstehe schon, daß "package" das Pendant zur Unit ist und "import" das Pendant zu "uses" (class, private und public sind mir auch klar). Nur verstehe ich nicht, warum "import Order" (oder "import Order.java") in der Datei "HelloWorld.java" nun nicht klappt. Das ist eben der Unterschied zu Pascal.

Vielleicht weißt Du, vielleicht weiß jemand anderes, woran das liegen könnte.

Nochmals danke für die Aufmerksamkeit!

Gruß

Delphi-Laie
Einloggen, um Attachments anzusehen!
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1844
Erhaltene Danke: 333

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: So 05.03.17 23:34 
Entschuldige, ich habe dich warten lassen.

Für's nächste Mal sei gesagt, wenn du eine externe (.java) Datei in dein (Eclipse) Projekt importieren möchtest, musst du im Projekt-Explorer:
Rechtsklicken -> Importieren -> General/Allgemein -> File System Anklicken.
Im Anschluss suchst dir den jeweiligen Ordner und die Datei/en aus, fertig.

Java kann nichts dafür dass die jeweiligen Entwicklungsumgebungen mehr oder weniger Benutzerfreundlich sind.
Man gewöhnt sich mit der Zeit daran, wenn man die nötige Routine hat.
Netbeans ist auch eine gute Java IDE. Probier sie eventuell aus. Vielleicht sagt sie dir mehr zu.

Wenn du andere Klassen aus anderen Packages verwenden möchtest, sieht der import wie folgt vor:
ausblenden Java Quelltext
1:
2:
3:
import MyPackage.*; // Der Stern steht für "Alles" was sich darin befindet
import MyPackage.MyClass1; 
import MyPackage.MyClass1.ClassInsideClass1;

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: Delphi-Laie
Delphi-Laie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1508
Erhaltene Danke: 211


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 06.03.17 13:41 
Ein ganz dickes Dankeschön, liebe Frühlingsrolle! Ich bin jetzt endlich erstmalig soweit, dieses package, diese Klasse wenigstens eingebunden zu haben. Endlich mal kein Rot, endlich kompiliert es.

Nun stehe ich "nur" noch, analog hier, vor dem Problem, eine Liste zu erstellen, zu befüllen und die Sortierprozedur damit aufzurufen. Ich werde mich bemühen.

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Entschuldige, ich habe dich warten lassen.


Gibt es nichts zu entschuldigen, Du bist ja zu nichts verpflichtet, und jeder andere kann ja auch antworten.

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Java kann nichts dafür dass die jeweiligen Entwicklungsumgebungen mehr oder weniger Benutzerfreundlich sind.
Man gewöhnt sich mit der Zeit daran, wenn man die nötige Routine hat.
Netbeans ist auch eine gute Java IDE. Probier sie eventuell aus. Vielleicht sagt sie dir mehr zu.


Ja, mir ist der Unterschied zwischen Entwicklungsumgebung und Programmiersprache durchaus bewußt, und daß es auch Netbeans gibt, ist mir wohlbekannt (auch schon heruntergeladen, aber noch nicht installiert). Ich hatte bereits vor Jahren ein Javaprojekt mit der - logischerweise damaligen - Eclipse erfolgreich "erforscht" und war damals ganz zufrieden damit. Inzwischen hat sich bei der eclipse einiges getan, und vom ersten Eindruck her gefällt sie mir ganz gut.
Delphi-Laie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1508
Erhaltene Danke: 211


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 06.03.17 17:26 
OK, Frühlingsrolle und die anderen, wenn ich noch mal stören darf, ich komme nun trotz Internetrecherche nicht weiter.

Funktionieren tut bisher:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
import java.util.*;
//import Order.Order;//funktioniert anscheinend auch
import Order.*;

public class HelloWorld {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("Hello world!");
    
    List<Integer> myList = new ArrayList<Integer>();
    myList.add(5);
    myList.add(4);
    myList.add(3);
    myList.add(2);
    myList.add(1);
    
    //sortSmooth(myList);
    
    System.out.println(myList.get(0));
    System.out.println(myList.get(1));
    System.out.println(myList.get(2));
    System.out.println(myList.get(3));
    System.out.println(myList.get(4));
  }
}


Nehme ich nun die Zeile

ausblenden Quelltext
1:
sortSmooth(myList);					


hinzu, kommt links das beliebte rote Symbol, und die Fehlermeldung
Zitat:
The method sortSmooth(List<Integer>) is undefined for the type HelloWorld


ist links am Zeilenanfang abrufbar. Verstehe ich nicht. Die Klasse "Order" in der Datei "Order.java" ist öffentlich:

ausblenden Quelltext
1:
public class Order					

und die in ihr enthaltende Prozedur sortSmooth direkt eine Hierarchieebene darunter ist es auch:

ausblenden Quelltext
1:
public static void sortSmooth(List ls)					


Der Import

ausblenden Quelltext
1:
import Order.*;					

müßte doch in der "HelloWorld"-Klasse "ankommen", denn entferne ich den Import

ausblenden Quelltext
1:
import java.util.*;					


, findet er

ausblenden Quelltext
1:
List<Integer> myList = new ArrayList<Integer>();					


nicht mehr.

Was ist falsch?

Vielen Dank und Grüße

Delphi-Laie

Edit: Heureka, so einfach ist es:

ausblenden Quelltext
1:
Order.sortSmooth(myList);					


und es sortiert auch! Herzlichen Dank nochmal, der nächste Sortieralgorithmus wird also bald Einzug in mein Animationsprogramm finden.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3609
Erhaltene Danke: 720

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Mo 06.03.17 17:37 
Bei statischen Methoden muß immer der Klassenname davor stehen:
ausblenden Quelltext
1:
Order.sortSmooth(myList);					

Die import-Anweisung sorgt nur dafür, daß du den kompletten Namensbereich davor nicht angeben mußt, s.a. Importieren von Paketen und Klassen.

Edit: ups, ein bißchen zu spät ;-)


Zuletzt bearbeitet von Th69 am Mo 06.03.17 19:55, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Delphi-Laie
Delphi-Laie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1508
Erhaltene Danke: 211


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 06.03.17 17:41 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Edit: ups, ein bißchen zu spät ;-)


Trotzdem dankeschön! ;-)