| Autor |
Beitrag |
Takeshi
      
Beiträge: 64
|
Verfasst: Do 10.04.03 13:59
Hi!
ich habe mir folgendes Tutorial angeschaut:
www.tutorials.delphi...urce.de/sequdateien/
Am Ende ist ein QuellCode des Programms angefügt. Leider wird in diesem in der Prozedur 'positionieren' 'Seek' falsch aufgerufen.. Jedenfalls bekomme ich ne Fehlermeldung.
Da mir dieses Thema sehr wichtig ist, bitte ich Euch mir zu helfen
vielen Dank schon einmal, Takeshi
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 10.04.03 14:09
delphi-source.de betreibt auch ein Forum, falls du es noch nicht gemerkt hast. Da würde mal als erstes Nachfragen.
Aber ich hatte auch schon meine liebe Not mit dem Source. Und meiner Meinung ist das nicht gerade das beste Tutorial zu dem Thema, vor allem mit dem fehlerhaften Source, oder ich bin zu blöd das Demo zu bedienen, kann natürlich auch sein. 
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 10.04.03 14:23
Hallo,
ich kenne das Tutorioal nicht, kann dir aber spontan ein keines Beispielprogramm anbieten, welches du hier runterladen kannst.
Vieleicht hilft dir ja das schon.
Gruß
Klabautermann
|
|
Takeshi 
      
Beiträge: 64
|
Verfasst: Do 10.04.03 14:37
@luc ja das das haben ich bemerkt, aber deswegen woll ich mich nicht gleich in dem forum anmelden muessen
@klabauter das programm funktioniert wenigstens  werde das mal durchlesen. aber eins vorweg: kann man die datei auch so anlegen, dass man sie spaeten mit einem editor lesen kann ?
greez
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 10.04.03 15:30
Hallo,
| Takeshi hat folgendes geschrieben: | kann man die datei auch so anlegen, dass man sie spaeten mit einem editor lesen kann ?
|
wenn du das vor hast, solltest du dich Fragen ob Typisierte Dateien das Richtige für dich sind. Da diese nach einem Blocksystem aufgebaut werden und somit jeder Datensatz gleich groß ist, egal wieviele Informationen tatsächlich drinn hast. Auch werden die Daten in Binärer form gespeichert, d.h. Zahlen sind nicht als soche lesbar.
Wenn du also z.B. diesen Recort hast:
Quelltext 1: 2: 3: 4:
| TMyRec = packed RECORD Name : STRING[50]; Alter : LongInt; END; |
Dann wistst in einem Edittor
1. immer Blöcke in der Größe von 55 Byte (Zeichen) finden (51 für den String, 4 für die Zahl).
2. Die Zahl nicht lesen können da sie als vier Simbole interpretiert wird.
3. Ein merkwürdiges Symbol vor dem eingegebenen Text finden (die längenangabe des Strings).
4. Hinter dem Namen noch (50 - Länge Des Namens) Merkwürdige Zeichen entdecken (was auch immer an der Stelle im Speicher war).
Wenn du also eine Lesbare Datei anlegen willst, dann solltest du auf ein reines Textfomat, wie z.B. INI oder XML setzen. Diese sind dan lesbar, aber der zugriff ist etwas langsammer.
Ein Beispiel zu tMemIniFile findest du ebenfalls auf der oben verlinkten Seite. Wenn auch nicht als Datenbnakersatz.
Gruß
Klabautermann
|
|
Takeshi 
      
Beiträge: 64
|
Verfasst: Do 10.04.03 16:18
vielen dank!
habe das ja jetzt erst wo ich mal so eine typisierte datei gesehen habe festgestellt.
glaube ne mischung waere ganz gut.
ich schaetze ich muss mich noch mit reinen textformaten beschaeftigen... was meinst du mit xml? ist es irgendwie einfach etwas in xml abzuspeichern ?
wo finde ich hilfe zum auslesen von eigenen textdateien ? Das Verarbeiten von eienr x-beliebigen syntax ist dabei wichtig zb so etwas wie eine ini:
Quelltext 1: 2: 3:
| [datensatz] name=name masse=breite,laenge |
wie kann ich eine Procedure schreiben, die die Werte aus 'name' und 'masse' ermittelt? informationen die ich zu sowas gefunden habe waren irgendwie spaerlich, ich moechte ja quasi eine textdatei mit einer syntax 'auslesen'..
vielen dank bis jetzt, Takeshi
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 10.04.03 16:54
Hallo,
zu Textdateien: Gucke in die Delphi Hilfe unter Textfile, ReadLn, WirteLn, Reset, Rewite. AssignFile & CloseFiel solltest du ja schon kennen.
Zu XML: XML ist ein sehr flexibeles Textformat, welches immer wichtiger wird. So speichern z.B. schon große Office Pakete wie das Open Office oder neuerdings auch das M$-Office ihre Daten im XML Format. Dieses ist sehr flexibel und ähnlich wie HTML-Dateien aufgebaut. Seit Delphi 6 (oder erst seit 7?) liefert Borland eine komponente zum zugriff auf XML mit. Weitere Infos zu XML findest du hier.
zu INI: Wenn du INI-Files verwenden möchtest (wie der von dir gepostete ausschnitt) dann empfieht es sich tIniFile bzw. tMemInifile zu verwenden. Dies sind zwei Standardklassen von Delphi. Ich empfehle letztere weil sie ein paar beschränkungen weniger hat. Dafür musst du aber zum Speichern einen Befehl aufrufen (siehe Beispielprogramm), das geht bei der ersten von alleine. Beide biten sehr konfortable möglichkeiten unterschiedlichste Datentypen in die INI-Datei zu schreiben und übernehmen die Konvertierung für dich. Tutorials findest du hier ( 1, 2).
Gruß
Klabautermann
|
|
Takeshi 
      
Beiträge: 64
|
Verfasst: Do 10.04.03 17:51
du hast mir sehr geholfen.
etwas möcht aber gern fragen: ich habe zunächstmal eine art von ini in folgender form:
Quelltext 1: 2: 3: 4: 5: 6: 7:
| [Object] nickname = Ku06_to_Ku04_hole pos = 10074, 0, 11080
[Object] nickname = Ku06_to_Ku07_hole pos = 15573, 0, 67 |
meine ersten gedanken sind, dass pos glaich drei werte auf einmal enthaelt. ferner sind objects immer als [Object] 'deklariert'. die sektionen haben damit nicht mehr unterschiedliche namen. kann man trotzdem damit umgehen, oder muss die struktur erst umgewandelt werden ?
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 10.04.03 18:24
Hallo,
Das ist so sicher nicht vorgesehen. Probleme macht das die Sektionen alle gleich heißen. Da würde ich dir empfehlen die durch zu nummerrieren. Dann kannst du auch direckt über die Datensatznummer (Sektionsnummer) auf sie zugreifen.
Die Werte bei pos kannst du so als String Laden und Speichern. Dann musst du nur die Zahlen "von Hand Isolieren (nach den Komata suchen sund die Werte vor, hinter und zwischen diesen rauskopieren). Einfacher ist es natürlich wenn du sie als PosX, PosY und PosZ speicherst. Dann kannst du sie direckt als Integer lesen und schreiben.
Ich wüde also folgende Struktur vorschlagen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| [1] nickname = Ku06_to_Ku04_hole posX = 10074 posY = 0 posZ = 11080
[2] nickname = Ku06_to_Ku07_hole posX = 15573 posY = 0 posZ = 67 |
Gruß
Klabautermann
|
|
Takeshi 
      
Beiträge: 64
|
Verfasst: Do 10.04.03 18:39
gut. dafuer mach ich mir dann ein konvertierungsprogramm.
letzten endes ist es aber doch den typisierten dateien sehr aehnlich oder ?
was ist nun besser, ich meine vom schwierigkeitsgrad - da scheinen mir inis handlicher, weil ich einfach prozeduren zum loeschen und adden von datensaetzen habe. ausserdem muss ich nicht nen zeiger setzen sondern kann einfach auf die 'sektion' zugreifen. oder vertue ich mich da ? bin ja noch ein gaaanz kleiner nub
greez
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 10.04.03 19:12
Hallo,
| Takeshi hat folgendes geschrieben: | | letzten endes ist es aber doch den typisierten dateien sehr aehnlich oder ? |
Nicht wirklich, es sein den du siehst es als Typisierte Datei vom Typ Char. Aber dann würdest du den zusammenhang der aufeinanderfolgenden Zeichen misachten.
in einer INI-Datei kannst du soetwas machen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| [1] nickname = Ku06_to_Ku04_hole posX = 10074 posY = 23 posZ = 11080
[2] nickname = Ku06_to_Ku07_hole posX = 15573 posZ = 67
[HighScores] 1=Jasemin 2=Max 3=Peter 4=Karl 5=Otto |
Du speicherst also völlig unterschiedliche Informationen in einer Datei. Es können auch wie hier unter [2] Informationen völlig fehlen (posY) die dann beim laden durch einen Standardwert ersetzt werden. Das sind beides Dinge, die bei Typisierten-Dateien völlig undenkbar währen.
| Takeshi hat folgendes geschrieben: | | was ist nun besser, ich meine vom schwierigkeitsgrad |
Da würde ich micht nicht festlegen wollen, die Frage ist halt, was willst du erreichen. Typisierte Dateien sind definitv schneller.
INI-Datein sind dafür Kriesensicherer weil flexibler. Außerdem wolltest du das ganze in einer Textform haben, was dir Typisierte Dateien nicht bieten. Schwer finde ich beides nicht.
Gruß
Klabautermann
|
|
Takeshi 
      
Beiträge: 64
|
Verfasst: Fr 11.04.03 00:10
inis sind wirklich besser geeignet, da flexibel.
habe nun ein programm hingekriegt, das nur die benötigten werte in eine neue ini liest. *schonmalsehrstolzist* kommas etc werden 'per hand' rausgefischt. ist immerhin mein erstes prog, das ne textdatei verarbeitet..
deine stichwoerter zum thema Textfile waren uebrigens super
ok genug davon. ich werde es also mit inis machen, auch wenn ich trotzdem nicht ganz verstanden habe, ob man noch ganz andere sachen in typisierte dateien schreiben kann (was du mit Typ Char meinst)
eine weitere frage tat sich mir auf: ich habe hier eine dll-datei, die nur strings enthaelt. zwar habe ich ein programm, das diese in textdateien exportiert, aber vielleicht kann man es ja so geschickt anstellen, das die dll irgendwie ueber ne funktion den string der zu ner id gehoert zurueckgibt?
home.arcor.de/its2loud/nameresources.zip
wenns besser ist, mache ich auch nen neuen thread dafuer auf, aber vielleicht kann mir ja schonmal jemand helfen. Tutorials beziehen sich dummerweise nur auf auslagern von Funktionen..
greez, Takeshi
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Fr 11.04.03 11:56
Hallo,
| Takeshi hat folgendes geschrieben: | | habe nun ein programm hingekriegt, das nur die benötigten werte in eine neue ini liest. *schonmalsehrstolzist* kommas etc werden 'per hand' rausgefischt. |
gratuliere (das ist ernst gemeint).
| Takeshi hat folgendes geschrieben: | | ok genug davon. ich werde es also mit inis machen, auch wenn ich trotzdem nicht ganz verstanden habe, ob man noch ganz andere sachen in typisierte dateien schreiben kann (was du mit Typ Char meinst) |
Die Bemerkung sollte nur kommentare von Mitlesern ersparen die es ganz genau sehen. MAnn eine Inidatei als eine aneinanderreihung von Buchstaben sehen. Das entspräche dann einem FILE OF Char. Das währe eine Typisierte Datei. Aber den Inhalt dann auszuwerten würde ziemlich aufwändig werden. Das ist aber für dich nicht wirklich wichtig.
| Takeshi hat folgendes geschrieben: | eine weitere frage tat sich mir auf: [...]
wenns besser ist, mache ich auch nen neuen thread dafuer auf, |
Ja, das ist besser. Desweiteren werden dann sicherlich noch mehr informationen zu der DLL benötigt, welche Funktionen sind drin, was genau willst du damit machen usw. Die reine DLL ist nciht ausreichend um dir helfen zu können.
Gruß
Klabautermann
|
|
Takeshi 
      
Beiträge: 64
|
Verfasst: Sa 12.04.03 00:24
ok ^_^
ueber die dll weis ich sonst nichts, ich habe sie nur mal mit restorartor geoeffnet.
siehe www.delphi-forum.de/viewtopic.php?t=9861
greez
|
|
Takeshi 
      
Beiträge: 64
|
Verfasst: So 13.04.03 23:42
Titel: Nachtrag
| Zitat: | > Der Code, der dem Tutorial zum Thema 'typisierte Dateien' (Rubrik
> VCL Tuts) scheint fehlerhaft.
Stimmt. Der Code aus dem Tutorial (HTML-Seiten) ist korrigiert
worden, die pas-Dateien nicht. Damit uns das künftig einfacher fällt,
habe ich den Download entfernt. Danke für den Hinweis!
|
| Zitat: | das Tutorial enthält keinen Fehler, weil es bereits vor über einem
Jahr überarbeitet worden ist. Dabei ist allerdings vergessen worden,
die Quelldateien entsprechend anzupassen. Die meisten Prozeduren im
Quellcode sind deshalb nicht ganz richtig. Die Routine
"Positionieren" ist z.B. auf der Website völlig anders (richtig)
dargestellt als sie im Download zu finden war. Deshalb einfach allen
Code aus dem Tutorialtext kopieren, dann funktioniert's.
|
|
|
Martin Strohal
Hält's aus hier
Beiträge: 23
Erhaltene Danke: 9
|
Verfasst: So 27.04.03 09:02
| Takeshi hat folgendes geschrieben: | | Am Ende ist ein QuellCode des Programms angefügt. Leider wird in diesem in der Prozedur 'positionieren' 'Seek' falsch aufgerufen.. |
Bei Fehlern in unseren Tutorials wäre eine Mail an mich nicht schlecht gewesen, statt es in anderen Foren zu diskutieren.
Der Beispiel-Code war übrigens tatsächlich falsch und wurde deshalb entfernt. Das Tutorial war in der Zwischenzeit bereits überarbeitet worden. Der auf der HTML-Seite gelistete Code funktioniert! Nur im Download-Code war der Bug noch enthalten.
| Luckie hat folgendes geschrieben: | | Aber ich hatte auch schon meine liebe Not mit dem Source. |
Ui, bei dir hätte ich das jetzt nicht vermutet. Der Bug war eigentlich eine Bagatelle. Und v.a. auf der Website nicht vorhanden...
| Zitat: | | Und meiner Meinung ist das nicht gerade das beste Tutorial zu dem Thema, vor allem mit dem fehlerhaften Source |
Der Source ist jetzt weg.
Gruß, Martin
_________________ Webmaster Delphi-Treff
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 27.04.03 09:52
| Martin Strohal hat folgendes geschrieben: | | Bei Fehlern in unseren Tutorials wäre eine Mail an mich nicht schlecht gewesen, statt es in anderen Foren zu diskutieren. |
Mach dir nix draus. Hier wurde schon einige Male diskutiert, ob Fragen zu Code aus anderen Foren nicht auch zuerst dort behandelt werden sollte. Das SwissDelphiCenter wird oft zitiert, Probleme mit und Fragen zu Code werden dann aber auch meistens hier behandelt. 
|
|