Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ungültiges Streamformat (https://www.delphipraxis.net/98736-ungueltiges-streamformat.html)

Svenkan 31. Aug 2007 13:37


Ungültiges Streamformat
 
Hallo Leute, ich habe ein ziemlich großes Problem mit einer Formdatei..
Ich wollte gerade mein Projekt öffnen, da erscheint die im Titel genannte Fehlermeldung.
Meine Hauptform wird nicht angezeigt und der Code ist irgendwann abgeschnitten.
Vor einer Stunde hat alles super funktioniert.
Doch nun ist fast der komplette Code nicht mehr in Delphi angezeigt.
Letztes Bearbeitungsdatum ist 13.43Uhr, wo ich zuletzt gespeichert/etwas geändert habe.
Also gehe ich nicht davon aus, dass es gelöscht ist.
Es wäre jetzt verdammt fatal, wenn die komplette Form unbrauchbar ist und ich das ganze nochmal machen darf.
Das würde Stunden/Tage dauern, das wieder so hinzubekommen..
Hat jemand nen Rat, was ich da noch tun kann? :(

sirius 31. Aug 2007 13:45

Re: Ungültiges Streamformat
 
Hast du im Editor schonmal in die Pas-Datei gesehen?

Svenkan 31. Aug 2007 13:56

Re: Ungültiges Streamformat
 
Nach unten hin fehlt mir verdammt viel an Code..:(
Oh man, echt super..

sirius 31. Aug 2007 13:57

Re: Ungültiges Streamformat
 
Und dann gäbe es noch backup-dateien, schau dir mal alle an!

Svenkan 31. Aug 2007 14:00

Re: Ungültiges Streamformat
 
Mhm..
Genauso viel Code drin, nur dass da ein über 1000 Zeichen String ist mit Kästchen..

sirius 31. Aug 2007 14:07

Re: Ungültiges Streamformat
 
sieht schlecht aus :(
Mehr fällt mir nicht ein.

jim_raynor 31. Aug 2007 14:14

Re: Ungültiges Streamformat
 
MMh. Sieht wirklich schlecht aus. Wenn du Vista benutzt kann man es mal über die Schattenkopien probieren, die Vista regelmäßig anlegt, allerdings ist das in den Home-Editions nicht so einfach ... Ansonsten ... lerne am besten draus ... Gut zum Sichern macht sich ein Versionskontrollsystem, dass sich durchaus auch für einzel-Entwickler lohnen kann. Aber dazu gibts genug hier im Forum.

Svenkan 31. Aug 2007 14:17

Re: Ungültiges Streamformat
 
Ne, benutze XP-Home..
Eine Möglichkeit mit Wiederherstellungsprogrammen gibts auch nicht?

RavenIV 31. Aug 2007 14:23

Re: Ungültiges Streamformat
 
Delphi 7 legt ja noch die ~pas-Dateien an.
Da ist die vorletzte Version der Datei drin. Vielleicht kannst Du da noch einen Teil des Codes retten.

Und vielleicht hast Du auch im Delphi eingestellt, dass er Backups machen soll...

Wiederherstellung?
Da ist nichts zu machen. Die Datei wurde überschrieben, der alte Inhalt ist für immer weg.

Svenkan 31. Aug 2007 14:34

Re: Ungültiges Streamformat
 
Ich habe etwas über *bak-Dateien gelesen.
Aber..wo sollen diese seien?

jim_raynor 31. Aug 2007 14:37

Re: Ungültiges Streamformat
 
Zitat:

Zitat von Svenkan
Ich habe etwas über *bak-Dateien gelesen.
Aber..wo sollen diese seien?

Normalerweise im gleichen Verzeichnis wie die pas Datei ...

RavenIV 31. Aug 2007 14:38

Re: Ungültiges Streamformat
 
Zitat:

Zitat von Svenkan
Ich habe etwas über *bak-Dateien gelesen.
Aber..wo sollen diese seien?

Soweit ich mich erinnern kann, liegen diese dort, wo die .pas auch liegt.
Ich habe das aber immer abgeschaltet, weil's mich genervt hat.
Wir hatten in der alten Firma in SVN, da wurde Abends immer eingecheckt.
In der neuen Firma lege ich jeden Tag eine Kopie auf dem Server an.

/edit: wo war der rote Kasten?

Svenkan 31. Aug 2007 14:39

Re: Ungültiges Streamformat
 
Sind das die ~pas-Dateien oder sollen dir wirklich die Endung *bak haben?
Ich seh nämlich so rein gar keine..

RavenIV 31. Aug 2007 14:40

Re: Ungültiges Streamformat
 
Zitat:

Zitat von Svenkan
Sind das die ~pas-Dateien oder sollen dir wirklich die Endung *bak haben?
Ich seh nämlich so rein gar keine..

Dann wirst Du die Backup-Funktion wohl nicht eingeschaltet haben...

Svenkan 31. Aug 2007 14:41

Re: Ungültiges Streamformat
 
Doch, ist sie.
Und in der Hilfe lese ich grade, dass das die Dateien mit dem Zusatz '~' sind.
Nagut, das heißt Arbeit..
Trotzdem danke..:(

RavenIV 31. Aug 2007 14:46

Re: Ungültiges Streamformat
 
Na dann hast Du ja ein arbeitsreiches Wochenende vor Dir.
Und denk daran, bei zweiten Mal wird der Code eh besser, weil man dann nochmal über die Fehler nachdenken kann...

Svenkan 31. Aug 2007 14:53

Re: Ungültiges Streamformat
 
Jep, das werde ich wohl haben..
Habe ein paar ältere Sicherungen auf meiner ext. Festplatte gefunden.
So ist es wenigstens etwas weniger Arbeit.
Aber das komische ist, dass Delphi die gesicherte DFM auch nicht akzeptiert..
Zitat:

[Fehler] RLINK32: Unsupported 16bit resource in file "Unit2.DFM"

RavenIV 31. Aug 2007 14:55

Re: Ungültiges Streamformat
 
Die pas und dfm werden ja zur gleichen Zeit gesichert.
Egal, was da passiert ist beim Speichern, es hat beide Dateien betroffen.

Svenkan 31. Aug 2007 14:57

Re: Ungültiges Streamformat
 
Ich habe ja die von meiner anderen HDD benutzt.
Wenn ich das andere Projekt öffne, funktioniert sie ja.

RavenIV 31. Aug 2007 15:00

Re: Ungültiges Streamformat
 
Die pas und die dfm müssen immer zusammenpassen.

Sonst machst Du halt zwei mal das Delphi auf.
In einem Delphi öffnest Du das alte Projekt, im anderen Delphi öffnest Du das neue Projekt.
Dann kannst Du im neuen Projekt ein Formular hinzufügen.
Nun kopierst Du den Inhalt der pas und der dfm von einem Delphi zum anderen Delphi.
Speichern, fertig ist die neue-alte Unit.

Svenkan 31. Aug 2007 15:20

Re: Ungültiges Streamformat
 
Dankeschön!
Super!
Habe ich wenigstens das schonmal wieder drin.
Dankeschön! :)

Svenkan 31. Aug 2007 17:14

Re: Ungültiges Streamformat
 
Es kommen lauter unerklärliche Fehler auf..

Delphi-Quellcode:
while not (Query23.EOF) do begin
[Fehler] Unit2.pas(3139): Nicht abgeschlossener String

Delphi-Quellcode:
fc1:=Ini.ReadString('HTML-Farben (Schrift)','1. Stunde','#0000A0');
[Fehler] Unit2.pas(3376): Anweisung erwartet, aber 'LABEL' gefunden


Beim ersten ist alles in der Umgebung ordentlich geschlossen.
Beim 2. Gibt es gar kein Label, was so heißt. Aber wenn ich darauf fc1.text mache, funktionierts.

Weiter hab ichs noch nicht probiert..

_frank_ 31. Aug 2007 18:48

Re: Ungültiges Streamformat
 
Liste der Anhänge anzeigen (Anzahl: 1)
vielleicht kannst du damit etwas retten (anhang). ist mein bisheriges Test-Programm zum decodieren von DFMs.
mit hilfe der offsets kannst du mit nem Hexeditor ggf. fast die ganze Datei retten...
vielleicht gibts auch Anregungen, Fehler zu erkennen und korrigieren/ignorieren, Programm steht noch am Anfang :)
ansonsten kannst mir das dfm auch mal schicken, dann kann ich mal schauen, was sich machen lässt. hab aber nicht viel Zeit und bin ab So in Bremen, also erstmal selber probieren :)

HTH Frank

Svenkan 31. Aug 2007 19:05

Re: Ungültiges Streamformat
 
No signature found.

Startet erst gar nicht. :(

_frank_ 31. Aug 2007 19:18

Re: Ungültiges Streamformat
 
ist das überhaupt ne Binär-dfm?
weil wenn nicht, kannst doch direkt drinrumschreiben und sie reparieren...
der fehler kommt, wenn die signatur nicht vorhanden ist (TPF0). entweder ist es keine binär-DFM oder der Anfang der Datei ist beschädigt. wenn die Form-Definition noch vorhanden ist (#Klassenname#Formname, wobei # die länge des nachfolgenden Strings ist). in dem Fall einfach mitm Hex-Edi einfach TPF0 an den Anfang schreiben und die Header-Reconstructor des Programms nehmen, damit der zusätzliche Dateiheader erzeugt wird.

Gruß Frank

Svenkan 31. Aug 2007 19:22

Re: Ungültiges Streamformat
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi öffnet die dfm ja erst gar nicht.
Befindet sich im Anhang, vlt kannst du sie ja öffnen.

_frank_ 31. Aug 2007 19:27

Re: Ungültiges Streamformat
 
naja, hab die Datei mal mit HxD geöffnet...außer 0-bytes nichts zu sehen, da lässt sich so erstmal nichts restaurieren....also entweder backup oder neu :(
//edit...
wegen der Unit, öffne die Datei mal in nem richtigen Editor (z.b. Scite), wo du die Zeilenendezeichen auf das windows-format umwandeln kannst, falls da irgendwas nicht stimmt...

Gruß Frank

jim_raynor 31. Aug 2007 19:30

Re: Ungültiges Streamformat
 
Hast du vielleicht noch eine kompilierte EXE von dem Projekt? dann kannst du daraus die DFM Datei extrahieren.

Svenkan 31. Aug 2007 19:36

Re: Ungültiges Streamformat
 
Hab ich mir schon gedacht.
Aber ich bin ja auch dabei.
Soweit auch fertig.
Nur macht der Code jetzt so üble Probleme, und dann auch so unlogische.
Ich hab vlt nich den saubersten Code, aber wenn man etwas kopiert, nur nen Query ändert und für eine neue Funktion einfügt, sollte es doch wohl eigtl klappen, oder?
Nur genau das tuts nicht.
Das regt mich auf. Oh man..

Bzgl. Scite: Gibt mir stattdessen nur 'NulNulNulNul(...)' aus.

@ jim_rayner: Wie funktioniert das denn? Klar habe eine exe! Das wär echt die perfekte Rettung!

FAlter 31. Aug 2007 19:41

Re: Ungültiges Streamformat
 
Hi,

die DFMs sind einfach als Ressourcen eingespeichert. Wenn du was selbst schreiben willst, orientiere dich z. B. an diesem Ressourcenexplorer-Beispielprojekt von Delphi :) sonst könntest du z. B. Bei Google suchenRessourceHacker verwenden (welches wohl ursprünglich auf diesem Beispiel aufbaute).

Mfg
FAlter

[edit] http://www.angusj.com/resourcehacker/ [/edit]

_frank_ 31. Aug 2007 19:55

Re: Ungültiges Streamformat
 
Liste der Anhänge anzeigen (Anzahl: 1)
stimmt, an die exe hab ich noch gar nicht gedacht...
kannst ja mal probieren mit meinem DFM-Editor die DFM aus der exe zu laden und als Datei abzuspeichern...

hab dir den dfmedit (aktuellste beta, eigentlich schon soweit stable) mal angehängt, da mein Webspace grade Probleme hat.

Gruß Frank

Svenkan 31. Aug 2007 19:57

Re: Ungültiges Streamformat
 
Mit der Datei bekomme ich wieder den gleichen Fehler, wie heute Nachmittag:
"Mindestens eine Zeile war zu lang und musste abgeschnitten werden"

/edit: @ Frank: Ich probiers gleich mal aus.
/edit2: Fehler beim Konvertieren :(

_frank_ 31. Aug 2007 20:07

Re: Ungültiges Streamformat
 
Liste der Anhänge anzeigen (Anzahl: 1)
das mit dem Scite war für die Unit2.pas (nicht abgeschlossener String) gedacht...oder haste den Fehler schon behoben und ich habs überlesen?

habs auch mal angehängt, einfach eintpacken, scite.exe starten, datei reinladen,Optionen=>Zeilenende-zeichen=>CR+LF, Optionen=>Zeilenende-zeichen konvertieren, speichern, ausprobieren, hoffentlich freuen :)

//edit, du hast aber schon die exe geladen und das entsprechende Formular ausgewählt (4.Icon in der toolbar/Strg+R/Datei=> aus Binärdatei laden), oder? die dfm ist hin...

HTH Frank

Svenkan 31. Aug 2007 20:22

Re: Ungültiges Streamformat
 
DANKE!!!!
DANKE!!!!
Ich liebe dich! :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Ok, das vlt nicht..
aber..
du hast mir den Tag, das Projekt und..meine Nerven gerettet!
Absoluten mega-Dank!!!

_frank_ 31. Aug 2007 20:26

Re: Ungültiges Streamformat
 
*g* schön, dass es geklappt hat :)

hast du alles wiederherstellen können?

kannst ja noch bisschen Beta-Testen (dfmedit),wenn du willst...
die Version so wie sie jetzt ist, soll nämlich die 0.4 werden, aktuell sind keine Bugs mehr bekannt...wurden soweit alle gefixt.
//edit
falls du wider Erwarten was finden solltst, bitte in den DFMEdit Thread posten oder das Support-Formular auf meiner Seite verwenden (ja, sie geht wieder, hoffentlich jetzt endgültig). ggf. vorher die Doku/den Thread lesen...da wurden einige Eigenheiten schon besprochen

Gruß Frank

Svenkan 31. Aug 2007 20:28

Re: Ungültiges Streamformat
 
Soweit ich es vorher wieder herrichten konnte, ist alles wieder da.
So ist aber wenigstens eine unnötige Funktion rausgeflogen, die sowieso nur gestresst hat. *g*

Klar, ich werde dein Prog ma durchgehen. Das bin ich dir ja wohl mindestens schuldig. ;)


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