Delphi7 Projekt mit Delphi4 öffnen

perpetuum.mobile

Grand Admiral Special
Mitglied seit
06.02.2003
Beiträge
2.849
Renomée
21
Standort
Hinter dir!
Hi,
ich hab jetzt folgendes Problem:
Ich hab mir von nem Kumpel sein Delphi7 abgekauft, weil in der Schule auch mit Delphi arbeiten. Als kleine Übung hatte ich nun Zuhause vorher was geschrieben und als Projekt abgespeichert. Aber in der Schule haben wir bloß Delphi4. Und dann kam jedes Mal nur ne Fehlermeldung, kann net öffnen. Hat einer ne Ahnung wo ich entweder Delphi4 herbekomme, oder das Problem mit dem Öffnen löse?

MfG, ShOOtist
 
Ich habe keine Ahnung von Delphi, aber die meisten Anwendungen bieten doch eine Exportfunktion. Probier doch mal, ob Du von Delphi7 nach Delphi4 exportieren kannst. Das dadurch neue, in Delphi4 nicht vorhandene Features nicht nutzbar wären, ist klar ...
 
Schau doch mal auf Borland.com, eine Menge älterer Software (teilweise aber auch brandneues wie JBuilder) gibt es dort kostenlos zum Download.
 
Also, was du da vor hast ist ganz schön proplematisch:

Ich würde folgendes tun: Lege in deiner Schule doch einfach ein neues Projekt an. In dieses Projekt fügts du alle Units, die du in deinem Delphi 7 Projekt hast, hinzu. Damit hast du schon mal ein Projekt angelegt.

Ob du das ganze allerdings kompilieren kannst ist eine andere Frage. Borland hat auf dem Weg zu Delphi 7 VCL-Units umbenannt und Funktionen von einer Unit in eine andere verschoben. Außerdem sind bei den verschiedenen Komponenten eventuell Eigenschaften entfernt oder hinzufügt worden.
 
@Sargnagel
also exportieren gibst net... nur speichern

@D'Espice
werd mal schauen. danke!

Original geschrieben von ckittel
Also, was du da vor hast ist ganz schön proplematisch:

Ich würde folgendes tun: Lege in deiner Schule doch einfach ein neues Projekt an. In dieses Projekt fügts du alle Units, die du in deinem Delphi 7 Projekt hast, hinzu. Damit hast du schon mal ein Projekt angelegt.

Ob du das ganze allerdings kompilieren kannst ist eine andere Frage. Borland hat auf dem Weg zu Delphi 7 VCL-Units umbenannt und Funktionen von einer Unit in eine andere verschoben. Außerdem sind bei den verschiedenen Komponenten eventuell Eigenschaften entfernt oder hinzufügt worden.

hmm, wenn dass so ist, dann bleibt ja nur noch die Lösung von D'Espice... schade. Also Delphi 7 schon fast umsonst erworben... naja wenigstens wars net teuer und ich kanns ja wieder verscherbeln. Danke fürs helfen!
 
Du könntest es auch einfach weiterverwenden, vielleicht findest du ja Gefallen an Delphi ;)
 
Original geschrieben von D'Espice
Du könntest es auch einfach weiterverwenden, vielleicht findest du ja Gefallen an Delphi ;)

naja, irgendwie finde ich ja auch schon gut. nur momentan wäre es für die schule ganz hilfreich, wenn da nicht das Problemchen wäre. Naja.
 
Wird wohl nicht gehen, aus einem einfachen Grund:

Delphi 7 = .NET
Delphi 4 = Borland VCL

m.f.g.
BoMbY
 
Delphi 7 = .NET
Delphi 4 = Borland VCL

Delphi 8 ist erst .Net ;D

Was sind denn das für Sachen, die du für deine Schule machst? Wenn es nicht so kompliziert ist, was du da machst, dann würde ich es zumindestens mal probieren, ob die Delphi 7 Units mit Delphi 4 zu öffnen gehen.
 
Original geschrieben von ckittel
Delphi 8 ist erst .Net ;D

Was sind denn das für Sachen, die du für deine Schule machst? Wenn es nicht so kompliziert ist, was du da machst, dann würde ich es zumindestens mal probieren, ob die Delphi 7 Units mit Delphi 4 zu öffnen gehen.

Okay, sorry, ich hab bei Delphi 6 aufgehört, deshalb mein Irrtum. Ich glaube ich hatte mal ein ähnliches Problem beim Öffnen von Delphi 6 Forms mit Delphi 4, da hatten die das Format der Form-Dateien geändert. Man müsste das ganze halt irgendwie manuel (mit dem Texteditor oder so) downgraden.

m.f.g.
BoMbY
 
Da bleibet wohl nix anderes übrig als Copy&Paste... :-[

Ich hab mir da was zusammengeschrieben. Jedoch hab ich da immer den bekloppten Fehler "5.3 is not a valid floating point value". Aber man musste doch bei float die Kommas als Punkte schreiben. Und mit nem Komma klappt es auch net, denn dann denkt val() es ist nen String.Meiner Meinung nach liegt der Fehler bei dem val() Aufruf. Aber val() kann sowohl real als auch integer prüfen, und liefert halt ne 0 zurück, wenns ne Zahl ist, sonst die Stelle wo es keine Zahl mehr ist. Deshalb habe ich jetzt Null Ahnung wo der Fehler liegt. Kann mir da jemand mal unter die Arme greifen? (In ähnlicher Form hat es bei mir auch schon mal funktioniert, also ist es wahrscheinlich nur ein winziger kleiner Fehler, den ich wieder mal nach sehr extrem langem Suchen nicht finde.)

Hier mal der Link: KLICKEN
 
Warum benutzt du nicht "StrToFloat" oder "StrToFloatDef" um den String zu konvertieren?
 
Welchen String? Wenn du den beim Auslesen meinst, tempdata, dann kommt doch ein Fehler, denn es sind ja auch Wörter enthalten. Und die würden bei strtofloat nen Fehler machen. Außerdem soll Val ja prüfen, obs ne Zahl oder nen Wort ist. oder sehe ich das falsch?

Hab auch noch ein Prob: (irgendwie häufen die sich)
Es ist nicht der code selber, sondern schon die deklaration.
Beschreibung http://www.indvikleren.dk/nopaste/show.php5?s=1194
code dazu: http://rafb.net/paste/results/J2443962.html
 
Zuletzt bearbeitet:
StrToFloat gibt ja eine Exception aus, wenn der String nicht konvertiert bar ist. Die könnte man ja abfangen. Oder man schreibt einfach sowas:

if IsNan(StrToFloatDef('z', NaN))
then //keine Zahl
else //Zahl

Zu deinem Problem: Ich würde dir gern helfen, aber ich versteh dein Problem nicht? Was du versuchst wird auf jeden Fall nicht gehen. Du willst doch nur das auslesen aus der Datei in einer anderen Unit machen, oder?
 
ALso, so hab ich mir das insgesamt gedacht:

Ich wollt mir ein Programm schreiben, welches mir den Kernzerfall darstellt. Als Teil davon soll es möglich sein, die vorgegeben Werte von ein Paar Elementen zu verändern, neue Elemente hinzu zu fügen. Und die Funktionen/prozeduren zum Schreiben/Lesen der externen Datei sollen halt in einer anderen Unit zur besseren Übersichtlichkeit untergebracht werden, da mein Hauptprogramm ja eigentlich der Kernzerfall selber ist.

Ganz nebenbei will man ja auch das Prinzip der Sprache ausgiebig lernen.

if IsNan(StrToFloatDef('z', NaN))
then //keine Zahl
else //Zahl

Das werde ich mir mal zu Gemüte führen. Aber ich dachte immer, wenn ich Strtofloat aufrufen, und der zu konvertierende String ein Wort ist, dann kommt nen allgemeiner Fehler. Und da mit StrToFloatDef muss ich auch irgendwie noch raffen. Ich hab mir zwar mal die Hilfe angesehen und es ausprobiert, aber der hat irgendwie immer nen Fehler gefunden. Mal sehen.

Was ich mich frage, warum Val() nicht funktioniert. Wenn du die nicht kennst, du kannst sie dir ja mal anschauen. Die sollte ja eigentlich GENAU das machen, was ich brauche. Deshalb bin ich auch so verwirrt.

Hier mal die Definition von val() http://rafb.net/paste/results/c2562399.html

UPDATE:
Also ich muss sagen jetzt klappt es. Danke dir, ohne das strtofloatdef hätte ich es nicht geschafft. Ein kleiner Fehler ist zwar noch drinne, dass er am Ende noch nen leeren String zur Elementenliste hinzufügt, aber dass ist ja egal. Hoch lebe ckittel!

Jetzt stellt sich mir bloß noch die Frage mit dem auslagern der Procedur in eine andere Unit, die einfach nur ein paar Prozeduren enthält. Die Prozeduren arbeiten aber mit der listbox_element, und sagen, die kennen die einfach net. Genauso ist es wenn ich mir ne Prozedur schreibe, die in derselben Unit steht und mit der listbox_element arbeitet. Immer "Undeclared indentfier: 'listbox_element'. Hier mal die gesamte Unit. Ich hab versucht die wichtigen Stellen mit <<<<< zu markieren, wo ich was geschrieben/verändert habe. Wenn du mir da auch noch helfen könntest... bitte. Meistens sind es doch immer solche klitzekleinen Dinge.
 
Zuletzt bearbeitet:
Also ich muss sagen jetzt klappt es. Danke dir, ohne das strtofloatdef hätte ich es nicht geschafft. Ein kleiner Fehler ist zwar noch drinne, dass er am Ende noch nen leeren String zur Elementenliste hinzufügt, aber dass ist ja egal. Hoch lebe ckittel

Kein Problem!

Zu deinem Problem:
So wie du das versuchst kann das nicht funktionieren. Die Listboxen sind in einer Klasse definiert. Die Funktion "loeschen" ist außerhalb der Klasse definiert. Du musst der Funktion schon sagen, welche Listbox gemeint. Dazu musst du die Klasse angeben (oder besser gesagt eine Instanz einer Klasse - ein Objekt). Das würde dann in deiner Funktion dann so aussehen:

procedure loeschen;
begin
Form1.listbox_element.clear;
end;

Allerdings ist das nicht schön programmiert!! :-[ Solche globalen Funktion solltest du unbedingt vermeiden.

Besser ist, du machst die Funktion loeschen zu einem Teil deiner Klasse in dem du ins Interface schreibst:

TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
listbox_element: TListBox;
listbox_hbwert: TListBox;
bearbeiten: TImage;
exit: TImage;
liste_lesen: TButton;
Label4: TLabel;
procedure exitClick(Sender: TObject);
procedure listbox_elementClick(Sender: TObject);
procedure listbox_hbwertClick(Sender: TObject);
procedure liste_lesenClick(Sender: TObject);
private
procedure Loeschen;
public
{ Public declarations }
end;

Im Implementation-Teil schreibst du dann:

procedure TForm1.Loeschen;
begin
listbox_element.Clear;
end;

Damit ist die Funktion jetzt Teil deiner Klasse.

Übrigens: Delphi-StyleGuide 8)
 
Toll danke. Das mit dem TForm1 ist der große Hänger bei mir gewesen. Das man die Prozedur oben definieren muss war mir klar... aber ich hab halt das mit dem Form1 vergessen. Den Delphi-Styleguide sollte ich mir vielleicht mal durchlesen. Wobei ich bei dem Code wirklich bloß selber durchschauen will (Wenn man wegen Hilfe dann jemand anderen fragt, ist dass schon wieder was anderes). Auf jeden Fall tausend dank!

Hier, wenn ich ne Prozedur in ne andere Unit auslagere, muss ich dass dann alles bei Public reinschreiben. Damit wird dass doch "global" oder so deklariert, oder?
 
Zurück
Oben Unten