![]() |
Re: Hilfe bei datei auslesen
Zitat:
Mich würde interessieren, welche Variable du wie deklariert hast. Evtl. liegt der Fehler einfach in einer Vermischung von Pascal- und WinAPI-Variablen. |
Re: Hilfe bei datei auslesen
Und noch was. Warum ist buf ein PChar, wo du es doch so wie so wieder nach String castest?
Delphi-Quellcode:
Hat die Datei keine Dateinamenerweiterung?
lstrcat(buf, '\System32\testordner\datei');
AssignFile(hFile, string(buf)); |
Re: Hilfe bei datei auslesen
@Luckie:
Zitat:
Zitat:
|
Re: Hilfe bei datei auslesen
Aha, man sollte doch immer alles lesen. :roll:
Also, so lange hie rnicht der komplette Quelltext der Routine gepostet wird ist es nur ein Rumgerate. Nur noch eine Vermutung. machst du vielleicht sowas:
Delphi-Quellcode:
Ich tippe allerdings auch darauf, dass Pascal Routinen mit System Routinen gemischt werde. Was amn nicht machen sollte, aber darauf wird in der Hilfe auch ausdrücklich hingewiesen.
hFile := OpenFile(...);
AssignFile(hFile, ...); |
Re: Hilfe bei datei auslesen
hallo luckie,
Zitat:
Delphi-Quellcode:
die funktion ist natürlich noch nicht fertig, macht aber bereits hier fehler....
function SetServer(szAddr: PChar): integer;
var hFile : TextFile; osvi : TOSVERSIONINFO; buf : Array[0..255] of char; ofs : TOFSTRUCT; lpFileSize : DWORD; line : string; begin result := -1; GetWindowsDirectory(@buf[0], SizeOf(Buf)); ZeroMemory(@osvi, SizeOf(TOSVERSIONINFO)); osvi.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO); if GetVersionEx(osvi) then begin case osvi.dwPlatformId of VER_PLATFORM_WIN32_WINDOWS: begin // kommt später end; VER_PLATFORM_WIN32_NT: begin lstrcat(buf, '\System32\drivers\etc\hosts'); AssignFile(hFile, string(buf)); Reset(hFile); while not EOF(hFile) do begin ReadLN(line); // löst den fehler aus MessageBox(0, PChar(line), 'blubb', 0); end; end; else Exit; end; end; end; nur ka wieso, ich entdecke keinen fehler, und wie gesagt beim ausführen kommt "Runtime Error 6 in..." |
Re: Hilfe bei datei auslesen
Hallo!
Zitat:
[gebetsmühle] Wo das gesucht wird, hängt davon ab, ob nicht ein anderes Programm den Default-Ordner geändert hat! [/gebetsmühle] Gib mal den vollen Pfad an, dann sehen wir weiter. Soll das im Windows-Verzeichnis sein? Gruß Dietmar Brüggendiek |
Re: Hilfe bei datei auslesen
hallo Brüggendiek ;),
guck dir mal die funktion "lstrcat"(das pendant zu "Concat()" in delphi) in der winapi hilfe an, dann weiss du warum da ein halber pfad steht. Denn "buf" enthält bereits die komplette pfadangabe zum Windows ordner. lstrcat kombiniert diese 2 strings zu einem bzw erweitert den ersten um den zweiten. |
Re: Hilfe bei datei auslesen
Moin!
Und könnte es vielleicht sein, das er einen doppelten Backslash da reinbekommt, weil \System32... ja auch noch einen hat am Anfang? Und nochwas, was auch der Fehler sein kann: Wenn du ein NTFS Laufwerk hast, dann haben die Dateien unterschiedliche Rechteverteilungen für die einzelnen User/Gruppen. Die hosts in dem Verzeichnis wird auch extra mit solchen Rechten geschützt, und zwar in dem Sinne, das Administratoren und das System vollen Zugriff auf die Datei haben aber normale Benutzer nur Lesezugriff. Da aber die alten File Routinen bei Reset, etc die Dateien immer zum Lesen und Schreiben öffnen, bekommt er da wahrscheinlich ein Problem. Abhilfe schafft hier die Variable FileMode (ich hoffe die gibt es noch, so hiess sie in Pascal) zu ändern. Sie gibt an, welcher Modus beim Reset() etc verwendet wird. IMHO müsstest du eine 1 vor dem Reset() der Variablen zuweisen - ich weiss es aber nicht mehr genau und daher solltest du dich da mal kundig machen bzw. einer hier weiss das. MfG Muetze1 |
Re: Hilfe bei datei auslesen
hallo Muetze,
danke für deine antwort.
Delphi-Quellcode:
Ne, der api hilfe nach wird zwar mit GetWindowsDirectory der pfad mit "\" am ende ausgegeben, jedoch war da keiner am ende. Der pfad muss auch 100% richtig sein, denn sonst würde ich den runtime error "3" bekommen, nicht "6" :\.
Und könnte es vielleicht sein, das er einen doppelten Backslash da reinbekommt, weil \System32... ja auch noch einen hat am Anfang?
ich werde mal weiter gucken, worans liegt, deine tipps waren jedenfalls schonmal gut. |
Re: Hilfe bei datei auslesen
Wieso sieht das niemand? ;)
Code:
... bei ReadLn übergibst du ihm doch garkeine Datei, wo er rauslesen soll. Ergo versucht er von StdIn zu lesen, was bei Nicht-Konsolen-Anwendungen scheitert. (imho)
...
AssignFile(hFile, string(buf)); Reset(hFile); while not EOF(hFile) do begin ReadLN(hFile, line); // sollte das Problem lösen MessageBox(0, PChar(line), 'blubb', 0); end; ... Grüße, Mario |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 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