Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

ASM - Stringmanipulation (strings verketten)
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 02.08.2007, 22:41    Titel: Antworten mit Zitat

Aah da gibt es sowas. Ja für Assembler mag es noch sinnvoll sein, obwohl es da gerade interesant ist auch mal "hinter" die Funktionen zu sehen indem man sie selbst programmiert. Und ob die dann auch schneller sind?
Jedenfalls vielen Dank für die tolle Hilfe bis jetzt, bin recht weiter gekommen. Nun, (um es kompliziert zu machen), ich sollte 3 Strings zusammenkopieren. Das hat zuerst super geklappt, nur war die Reihenfolge falsch; also tauschte ich die Variablen so aus dass es nun richtig sein müsste (open1+szFileName+open2). Allerdings genau dann (und sonst nie) stürzt das Programm ab traurig
Hier der Codeausschnitt:
Code:
mov szFileName[0],0     
            invoke GetFileName,hWin,SADD("Open A File"),
                                    SADD("All files",0,"*.*",0)
            cmp szFileName[0],0     
            je @F

Start:   
  lea esi, open1
 FindLastByte:
  lodsb
  Or al, al
  jnz FindLastByte
 
  dec esi
  mov edi, esi
  lea esi, szFileName
 CatStrings:
  lodsb
  Or al, al
  jz Done
  stosb
  jmp CatStrings
 
 Done:
  mov al, 0
  stosb

Start2:   
  lea esi, open1
 FindLastByte2:
  lodsb
  Or al, al
  jnz FindLastByte2
 
  dec esi
  mov edi, esi
  lea esi, open2
 CatStrings2:
  lodsb
  Or al, al
  jz Done2
  stosb
  jmp CatStrings2
 
 Done2:
  mov al, 0
  stosb



            invoke MessageBox,hWin,ADDR open1,ADDR szDisplayName,MB_OK


EDIT: ..kann das sein dass ein String irgendwie zu klein reserviert wird? Hatte ich aber noch nie Probleme mit nullterminierten Strings (Eingaben ab Tastatur bei denen man die Grösse im Voraus auch nicht weiss etc.)
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 15.08.2007, 14:44    Titel: Antworten mit Zitat

Habe mal in der Datei nachgeschaut wo szFileName deklariert wird. Es wird mit szFileName db 260 dup(0) deklariert. Dürfte daran liegen, da jeweils ein Problem auftritt wenn szFileName nicht am Schluss der Kette ist, obwohl für die Übergabe an Win32-Funktionen damit keine Probleme entstehen wie mit meinen Strings ansonsten (variable db " ",0) auch nicht! Aber wie kann ich das umgehen? Habe versucht anders zu deklarieren doch das klappte nicht, kommt wohl von der openfilename-Struktur.
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz